MongoDB的⼏种同步⽅式
在对MongoDB使⽤的过程中,总结了⼏种常⽤的备份、恢复、同步的⽅式。
1、冷拷贝
这种⽅式对数据同步的完整性保持的最好,同时也⾮常⽅便,但是会影响服务器的使⽤。
⾸先关闭源数据库服务,之后使⽤远程复制命令将数据⽂件全量拷贝到⽬标服务器的数据⽬录下,再启动⽬标服务器。
如果不关闭源数据库,将会导致部分数据没有写到数据⽂件中,有很⼤概率⽬标服务器⽆法启动。
2、使⽤mongodump
mongodump是mongodb官⽅提供的导出⼯具,使⽤起来⾮常简单,⼀个例⼦如下
mongodump --host example --port 37017 -o /opt/backup/mongodump -d dbname -c collectionname
通过host port参数指定主机,通过o参数指定输出⽬录,通过d参数指定数据库,通过c参数指定集合
mongodump会⾃动建⽴备份⽬录,并按照数据库,集合划分⽬录与⽂件。女字加一笔是什么字
对应的,官⽅还提供了mongorestore程序来恢复备份,命令类似于mongodump。使⽤相同的参数指定主机,数据库,集合等信息,最后⼀个参数默认为⽤来恢复的数据⽂件⽬录即可。
还有⼏个需要注意的问题:
mognodb不会导出索引数据,所以在恢复后需要重新建⽴索引。
备份过程中所做的修改可能⽆法写⼊到备份⽂件中,如果需要同步这⼀些数据,可以使⽤--oplog参数记录过程中的修改⽇志,同时需要服务器为副本集或主从模式,否则数据库不会产⽣oplog。
3、增量备份
当数据库为副本集的主节点或主从模式的主节点时,将会⽣成操作⽇志,mongodb会使⽤操作⽇志对各节点中的数据进⾏增量同步。
利⽤这⼀点,我们也可以对集之外的节点做同样的增量同步。
oplog数据存储在数据库的local数据库下。
主要字段如下
名称说明
三十而立四十不惑ts操作的时间戳,8字节,mongodb⾃⾝的时间戳格式
dnf街头争霸op操作类型,包括:i插⼊,u更新,d删除,c数据库命令,n⽆操作
ns数据库与集合名称
操作的唯⼀id
h
o操作的内容
o2更新时的条件
有了这些信息,我们就可以⽤代码模拟mongodb的同步模式,对操作⽇志实现重播,从⽽实现数据的增量同步。
基本代码逻辑如下:
ns = oplog['ns']
index = ns.find('.')
dbname = ns[0:index]
collname = ns[index + 1:]
云南中考成绩查询时间op = oplog['op']
if op == 'i': # insert
dest_mc[dbname][collname].save(oplog['o']) # if exist,recover it elif op == 'u': # update双球玩法中奖规则
dest_mc[dbname][collname].update(oplog['o2'], oplog['o'])
elif op == 'd': # delete
dest_mc[dbname][collname].remove(oplog['o'])
elif op == 'n': # no-op
logging.info('no-op')
else:刘亦菲伴娘
<('unknown command: %s' % (oplog))
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论