1:创建测试数据
> use maxiangqian
switched to db maxiangqian
> db.oplogtest.insert({"id":"1"})
WriteResult({ "nInserted" : 1 })
> db.oplogtest.insert({"id":"2"})
WriteResult({ "nInserted" : 1 })
> db.oplogtest.insert({"id":"3"})
WriteResult({ "nInserted" : 1 })

2:做一个全备份

/home/maxiangqian/mongodb-linux-x86_64-rhel62-3.4.2/bin/mongodump --host=10.103.16.34 --port=27017 --db=maxiangqian --out=/home/mongodb/backup/bkm
3:再插入几条测试数据

rsmxqtest:PRIMARY> db.oplogtest.insert({"id":"4"})
WriteResult({ "nInserted" : 1 })
rsmxqtest:PRIMARY> db.oplogtest.insert({"id":"5"})
WriteResult({ "nInserted" : 1 })
rsmxqtest:PRIMARY> db.oplogtest.insert({"id":"6"})
WriteResult({ "nInserted" : 1 })
rsmxqtest:PRIMARY> db.oplogtest.insert({"id":"7"})
WriteResult({ "nInserted" : 1 })
rsmxqtest:PRIMARY> db.oplogtest.insert({"id":"8"})
WriteResult({ "nInserted" : 1 })

3:备份特定时间点的日志

mongodump --port 27017 -d local -c oplog.rs -q '{ts:{$lt:Timestamp(1415928580, 1),$gt: Timestamp(1415928529, 1000)}}' -o /home/mongodb/backup/opm

从某个时间点的一个oplog

mongodump --port 27017 -d local -c oplog.rs -q '{ts:{$gt: Timestamp(1489135578, 1)}}' -o /home/mongodb/backup/opm

4:将日志导出文件

/home/maxiangqian/mongodb-linux-x86_64-rhel62-3.4.2/bin/bsondump /home/mongodb/backup/opm/local/oplog.rs.bson >optest

5:查看相关maxiangqian.oplogtest相关记录:

cat optest|grep maxiangqian.op

5:查找日志点恢复到6的记录:

时间点是:
1489135569
6:先恢复整库:
/home/maxiangqian/mongodb-linux-x86_64-rhel62-3.4.2/bin/mongorestore --port=27017 /home/mongodb/backup/bkm/
7:验证数据:

oplogtest
> db.oplogtest.find()
{ "_id" : ObjectId("58c267a24bbb77d479a0cb40"), "id" : "1" }
{ "_id" : ObjectId("58c267a54bbb77d479a0cb41"), "id" : "2" }
{ "_id" : ObjectId("58c267a84bbb77d479a0cb42"), "id" : "3" }

8:恢复oplog到时间戳1489135569

/home/maxiangqian/mongodb-linux-x86_64-rhel62-3.4.2/bin/mongorestore -h 127.0.0.1 -p 27017 --oplogReplay --oplogLimit "1489139135:1" /home/mongodb/backup/opm/local/oplog.rs.bson

9:验证数据

rsmxqtest:PRIMARY> db.oplogtest.find()
{ "_id" : ObjectId("58c275344bbb77d479a0cb48"), "id" : "1" }
{ "_id" : ObjectId("58c275384bbb77d479a0cb49"), "id" : "2" }
{ "_id" : ObjectId("58c2753b4bbb77d479a0cb4a"), "id" : "3" }
{ "_id" : ObjectId("58c275b84bbb77d479a0cb4b"), "id" : "4" }
{ "_id" : ObjectId("58c275bc4bbb77d479a0cb4c"), "id" : "5" }

试试证明,恢复到了5的时候,所以要恢复到6的话,时间点应该是7开始的时间戳

mongodb时间点备份恢复的更多相关文章

  1. mongodb导入导出备份恢复

    mongodb数据库同样离不开必要的维护,如备份.恢复.导入.导出. 其实备份和恢复比导入和导出要方便些,而且一般不会出错,所以大部分时候使用备份和恢复操作就可以了 1. 备份Mongodb mong ...

  2. mongodb数据库备份恢复-windows系统

    备份语法: mongodump命令脚本语法如下: >mongodump -h dbhost -d dbname -o dbdirectory -h: MongDB所在服务器地址,例如:127.0 ...

  3. (转)Db2 备份恢复性能问题诊断与调优

    原文:https://www.ibm.com/developerworks/cn/analytics/library/ba-lo-backup-restore-performance-issue-ju ...

  4. Mongodb之备份恢复脚本

    本分脚本: !/bin/bash #备份文件执行路径 which mongodump DUMP= #临时备份目录 OUT_DIR= #本分存放目录 TAR_DIR= #获取当前系统时间==> 2 ...

  5. 010.MongoDB备份恢复

    一 MongoDB备份 1.1 备份概述 mongodb数据备份和还原主要分为二种,一种是针对于库的mongodump和mongorestore,一种是针对库中表的mongoexport和mongoi ...

  6. MongoDB for OPS 04:备份恢复

    写在前面的话 和 MySQL 一样,mongodb 也是需要将数据进行备份的,毕竟天有不测风云,谁也不知道哪天机器就炸了. 备份恢复 mongodb 提供了两种备份恢复手段:mongoexport / ...

  7. 1.MongoDB 2.7主从复制(master –> slave)环境基于时间点的恢复

    (一)MongoDB恢复概述 对于任何类型的数据库,如果要将数据库恢复到过去的任意时间点,否需要有过去某个时间点的全备+全备之后的重做日志,MongoDB也不例外.使用全备将数据库恢复到固定时刻,然后 ...

  8. 2.MongoDB 4.2副本集环境基于时间点的恢复

    (一)MongoDB恢复概述 对于任何数据库,如果要将数据库恢复到过去的任意时间点,否需要有过去某个时间点的全备+全备之后的重做日志. 接下来根据瑞丽航空的情况进行概述: 全备:每天晚上都会进行备份: ...

  9. mongodb 的备份恢复导入与导出

    导入导出 use hndb; db.s.save({name:'李四',age:18,score:80,address:'郑州'}); db.s.save({name:'李三',age:8,score ...

随机推荐

  1. 深刻理解Python中的元类(metaclass)(转)

    转载地址:http://blog.jobbole.com/21351/ 另外有几点理解记录下: 创建一个实例时,有时会传入参数,这些参数会同时传入 __init__() 和 __new__(),如: ...

  2. epoll中epoll_data_t 中fd和ptr的用法

    https://blog.csdn.net/u011123091/article/details/81867078 Linux高性能服务器P152

  3. List与IList的区别

    在我看一个源程序的时候看到这个例子使用了IList<T>返回类型,因为上午刚刚总结过List<T>的详细用法,突然出现了IList<T>,感觉很奇怪,于是上网搜集了 ...

  4. select for update和select for update wait和select for update nowait的区别

    CREATE TABLE "TEST6" ( "ID" ), "NAME" ), "AGE" ,), "SEX ...

  5. unittest之装饰器

    前面讲到 unittest 里面 setUp 可以在每次执行用例前执行,这样有效的减少了代码量,但是有个弊端,比如打开浏览器操作,每次执行用例时候都会重新打开,这样就会浪费很多时间.于是就想是不是可以 ...

  6. Django多进程日志文件问题

    Django多进程日志文件问题 最近使用Django做一个项目.在部署的时候发现日志文件不能滚动(我使用的是RotatingFileHandler),只有一个日志文件. 查看Log发现一个错误消息:P ...

  7. Javascript替代eval方法

    Javascript替代eval方法 通常我们在使用ajax获取到后台返回的json数据时,都要使用 eval 这个方法将json字符串转换成对象数组, 像这样: obj = eval('('+dat ...

  8. disruptor--Introduction

    The best way to understand what the Disruptor is, is to compare it to something well understood and ...

  9. MyBatis 知识点梳理

    简单地梳理下MyBatis相关的知识点,主要想让自己重新捡起以前学的框架,如果能给广大程序猿朋友有所帮助那就更好了.有疏漏的地方也欢迎大家评论指出.闲言少叙,进入正题....... MyBatis知识 ...

  10. Javascript之for循环该注意的问题

    很多时候我们都用到for循环,而用到for循环部门往往对一个数组进行循环,其中我们很多时候都是这样写的: // 次佳的循环 for (var i = 0; i < myarray.length; ...