当前位置:Gxlcms > 数据库问题 > mongodb的备份

mongodb的备份

时间:2021-07-01 10:21:17 帮助过:2人阅读

"ts": Timestamp(1468323972, 37), "t": NumberLong(1), "h": NumberLong("-9013437047635619317"), "v": 2, "op": "i", "ns": "test1.testone", "o": { "_id": ObjectId("5784d8849fea750f2cce73c7"), "name": 35 } }

     上面就是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的备份

标签:

人气教程排行