时间:2021-07-01 10:21:17 帮助过:2人阅读
上面就是oplog的内容,其中"o"中的内容就是document本身了。可以看到我是在test1数据库的testone集合中插入了该document。
根据oplog的特点,就可以利用这个东西来做增量备份了。
首先在全量备份之前,我们需要得到现在的oplog的ts。Timestamp里分别是unix时间戳和序列号。记录下这个ts之后,就可以进行全量备份了。下面还是利用mongodump,只不过这次需要加上两个参数"-d local"和"-c oplog.rs",分别是数据库和collection。另外还有一个很重要的参数,就是"--query",加上一个查询条件即可,下面是一个例子:
mongodump -d local -c oplog.rs --query "{"ts":{$gte:Timestamp(1468323972, 18)}}" -o F:\data\test
1468323972, 18就是我们上面全备之前记录的时间戳和位置。这个命令会将该时间戳之后的所有数据导出来:
增备应该是每天进行的,因此每天都需要将该命令执行一遍,基于第一次的全备即可。
最近玩了一个工具,叫做mongo-oplog-backup的,是一个用ruby写的工具,在github上开源了,支持全备和增备,也是基于mongodump的,只是在恢复的时候,这个工具还能完成增量备份的bson文件和全量备份的bson的合并。但是ruby是我不会的语言,因此最近也在借鉴人家的思想用python写一个自己的工具,希望能成功吧。
这里附上这个工具的地址,还挺好用的:https://github.com/journeyapps/mongo-oplog-backup
转载请附原文链接:http://www.cnblogs.com/wingsless/p/5672057.html
mongodb的备份
标签: