注意: 我下面的这个mongodb版本较低(3.2.16), 还可以用这个工具来同步数据。工具不支持更高版本的mongodb了.

 

使用方法:

https://github.com/Qihoo360/mongosync

# 需要先yum安装这几个依赖包,否则下面的make编译会失败
yum -y install gcc gcc-c++
yum -y install boost-devel boost openssl-devel

git clone https://github.com/Qihoo360/mongosync.git

cd mongosync

make
 

编译完成后,会生成一个output的目录,里面放的就是编译完成的文件还有一个配置文件。

说明如果编译报错的话,日志路径在: mongosync/dep/mongo-cxx-driver/build/scons/config.log

 

 

 

cd output/

 

程序可以通过命令行及配置文件的方式运行,参数说明如下:

-c conf.file 使用conf.file配置文件启动mongosync
--src_srv arg 源端ip及端口信息,格式:--src_srv 192.168.1.1:27017
--src_user arg 源端用户
--src_passwd arg 源端密码
--src_auth_db arg 源端认证库
--src_use_mcr 强制源端使用MONGODB-CR密码认证
--dst_srv arg 目的端ip及端口信息,格式:--src_srv 192.168.1.2:27018
--dst_user arg 目的端用户,需要具有创建数据库,集合,索引等操作权限
--dst_passwd arg 目的端密码
--dst_auth_db arg 目的端认证库
--dst_use_mcr 强制目的端使用MONGODB-CR密码认证
--db arg 源端数据库,默认同步除admin及local外的所有数据库
--dst_db arg 目的端数据库
--coll arg 源端集合,默认同步全部集合
--dst_coll arg 目的端集合
--oplog 是否同步oplog
--raw_oplog 是否只同步oplog
--op_start arg oplog同步的开始点位,格式:--op_start 1479436001,1
--op_end arg oplog同步的结束点位,格式:--op_start 1479436002,2
--dst_op_ns arg oplog同步时目的端的oplog名称,格式:--dst_op_ns sync.oplog
--no_index 是否同步索引
--filter arg 同步过滤语句,格式:--filter {"name":xxx}
--bg_num arg 数据同步线程数
--batch_size arg 数据传输块的大小(0-16M,默认是16M)
 

 

./mongosync --src_srv 192.168.2.2:27017 --src_user admin --src_passwd 123456 --src_auth_db admin --src_use_mcr --dst_srv 192.168.2.4:27017 --dst_user root --dst_passwd 123456 --dst_auth_db admin --db db1 --dst_db  db1 --bg_num 4 

更全的使用方法在这里:https://github.com/Qihoo360/mongosync/wiki/%E4%BD%BF%E7%94%A8%E6%A0%B7%E4%BE%8B

如果要在后台运行,可以开个screen窗口。