利用mongosync做數據庫遷移

背景

有些情況下,官方推薦的遷移方法不是那麼便捷,比如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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章