環境說明:bbs數據采集的數據越來越多,目前是50G,每天大概以200W的數據量增長。而當前服務器1.2上面的空間不足,需要把數據遷移到空間足夠大的1.3上面去
嘗試了2種方式對數據進行遷移,一種是rsync,直接拉取數據;另一種是使用mongodump/mongorestore
1.rsync
操作步驟:
1.2:
[mongodb]
path = /data1/mongodb/data
hosts allow = 192.168.1.0/24
read only = no
write only = no
1.3:
rsync -avz root@192.168.1.2::mongodb/dbname /data/mongodb-linux-x86_64-1.8.1/data/
chown -R mongodb:mongodb /data/mongodb-linux-x86_64-1.8.1/data/
使用時間:50分鍾
到目標服務器數據:50G
優點:使用時間短
缺點:需要配置rsync,數據占用的空間大(數據原封不動的拉取過來,包括碎片)
2.mongodump/mongorestore
操作步驟:
mongodump:
/data/PRG/mongodb/bin/mongodump --host 192.168.1.2:27017 -d dbname -uuername -ppasswd -o /data/mongodb-linux-x86_64-1.8.1/data/ --directoryperdb
mongorestore:
/data/mongodb-linux-x86_64-1.8.1/bin/mongorestore --dbpath /data/mongodb-linux-x86_64-1.8.1/data/ --directoryperdb /data/dbname/
chown -R mongodb:mongodb /data/mongodb-linux-x86_64-1.8.1/data/
使用時間:35(mongodump)+90(mongorestore)
到目標服務器數據:20G(需要的空間大大減小,拉取過程中相當於做了一次碎片整理)
優點:遷移到新服務器的數據經過了整理,需要空間大大減小
缺點:需要時間長
數據遷移時需要停mongo進行操作,而2種方式各有優缺點,如果可以忽略操作時間內的數據的話,那么使用第2種方式會比較好(已經有不少例子因為碎片帶來嚴重的后果)