mongodb同步
py-mongo-sync
MongodbSync
mongodb 的一个同步工具,具备将一个数据源上的数据,同步到其它 mongodb 上,支持:
mongos -> (mongos, mongod)
mongod -> (mongos, mongod)
如果源是 mongos,情况比较复杂,需要从 mongos 里将副本信息全部取出来,同步到 mongod 中; 需要注意的是,源和目的 mongo,都需要使用 admin 账号,以取得所有权限; 支持 oplog 格式为:”ts” : Timestamp(1372320938000, 1) 目前的 2.6.4 版本是这种格式;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| sync-info mode: 取值为 incr 表示增量同步;all 表示全量同步,会将源数据拷贝到目标库;smart 表示智能同步,会先全量拷贝,再进行增量; record_interval: 读取了一定量数据,会对 optime 进行更新; record_time_interval: 读取了一定的时间,会对 optime 进行更新; opt_file: optime 记录在 该文件中,all 模式在拷贝完更新它,incr, smart 模式不定期更新它,如果文件不存在则默认从 1 小时前同步; all_dbs: 为 true 表示同步全部的数据库, 不包括 admin,config,local, 否则同步 dbs; dbs: 需要同步的数据库集合,不包括 admin,config,local,如果要同步某个db下的collection,使用 db.collection 形式; queue_num: 队列最大数目,暂无使用该参数,代码里固定了是 20000; threads: 线程数,由于源和目的 的网络状况可能不一样,可以有多个连接去写目的地址;
mongo-src addr: 源地址,可以是一个副本集,也可以是 mongos,如果是 mongos,系统会自动连接到相应的副本集; user: 管理员账号 pwd: 管理员密码
mongo-dest addr: 目的地址,可以是一个副本集,也可以是 mongos; user: 管理员账号 pwd: 管理员密码
|
当目的没有数据库时和集合时:会自动创建,包括索引
当源为 mongos 时:所有副本集的内容会同步过去;
当源为 副本集 时:所有副本集的内容会同步过去;
增加、删除、修改 数据命令:OK;
增加、删除 collection 时:OK;
db 级别的操作:忽略;
同步性能:取决于网络带宽;
容错能力:能处理源和目的的网络异常,系统有容错处理能力;