背景
有些情況下,官方推薦的遷移方法不是那麼便捷,比如mongos集羣的整體遷移步驟非常繁瑣,且對網絡的要求很高;
mongosync支持mongos集羣遷移,目前支持3.0及以下版本,特別適合mongodb跨機房的遷移
目前有這麼一個需求
機房A有一套mongos集羣,需要遷移到機房B,A和B之間的mongo實例網絡不通,但是在其中一箇中轉服務器上能夠分別ping通A機房和B機房的mongodb實例,於是我採用360開發的開源遷移工具mongosync
步驟
1 在B機房建立和A機房相同配置的mongos集羣
2 A機房mongos停止負載均衡器
3 mongosync全量+增量同步
4 等待兩端集羣數據完成同步後,在B機房設置sharding信息,比如哪個表的哪個字段參與sharding
5 A機房mongos集羣業務停服
6 確認數據完全同步後,應用層將業務ip改爲B機房的mongos ip
7 遷移完成
mongosync的安裝和使用方法
系統版本 centos 7.2 python 2.7.5 gcc 4.8.5
安裝方法
1 git clone https://github.com/jacketwoo/mongosync
2 yum install -y scons
3 yum install -y boost boost-devel
4 yum install -y openssl-devel
5 cd mongosync/
6 make
使用方法(全量+增量+mongos)
nohup ./mongosync --src_srv 10.6.13.140:27000 --src_user ucloudbackup --src_passwd xxx --src_auth_db admin --dst_srv 10.19.110.146:27000 --dst_user ucloudbackup --dst_passwd xxx --dst_auth_db admin --oplog --is_mongos --shard_user ucloudbackup --shard_passwd
xxx&
其中shard_user和shard_passwd指的是每一個分片的登錄賬戶和密碼,這裏沒有考慮多分片賬戶不一致的情況,所以理論上最好所有的分片都採用一套賬戶和密碼
更多wiki參見https://github.com/Qihoo360/mongosync/wiki