利用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

你可能感兴趣的:(NoSQL/MongoDB)