码迷,mamicode.com
首页 > 数据库 > 详细

MongoDB的备份和恢复

时间:2020-02-26 22:57:08      阅读:104      评论:0      收藏:0      [点我收藏+]

标签:版本   log   数据库名   back   修改   命令参数   rest   gzip   自身   

  (一)备份

  1、逻辑备份

  利用mongodump命令实现逻辑备份,如:

  mongodump -h 127.0.0.1:28000 -u sys_admin --authenticationDataBase admin -p PASSWORD -d databasename -c collectionname

        --dumpDbUsersAndRoles -o /home/bien/bien.sql

  个命令参数含义如下:

  • -h: MongoDB所在服务器地址,例如:127.0.0.1。当然也可以指定端口号:127.0.0.1:27017。
  • --port:端口号
  • -d:需要备份的数据库实例,例如,bien_db (数据库名)
  • -c:需要备份的集合,例如:bienCollection (集合名)
  • -o:备份数据的存放位置
  • -u:用户名
  • -p:密码
  • --gzip:压缩
  • --oplog:point in time恢复用的参数,并且只支持全库备份。
  • --authenticationDatabase:认证库
  • --dumpDbUserAndRoles:dump用户和角色,只有在单库备份时才需要这么做。
  • --archive=dbname.gz:3.2版本新增,归档备份为1个文件,不能和-o参数同时使用。

  2、物理备份

  为了实现物流备份,可以在从库上执行下面这条命令:

  db.runCommand({createBackup:1, backupDir:"/home/bien/bkData"})

  其中,/home/backup/data地址可以根据自身修改,它是用来存储备份数据的。

  (二)恢复

  1、逻辑恢复

  利用oplog实现point-in-time的恢复,步骤如下:

  • 利用mongodump命令备份出oplog:

  mongodump -h 127.0.0.1:27020 -u sys_admin --authenticationDataBase admin -p PASSWORD -d local -c oplog.rs -o /home/bien/backup

  • 利用bsondump命令让oplog具备可读性:

  bsondump /home/bien/backup/local/oplog.rs.bson > /home/bien/local.log

  • 将oplog改名,避免在restore时报错,并将oplog的备份复制到Standalone机器上:

  mv oplog.rs.bson oplog.bson

  • Standalone实例导入物理或逻辑备份。
  • Standalone库启动
  • 导入全库备份,找出误操作时的具体时间,比如在 2020-02-02 02:02:02时删除,将这时间转换为一串数字时间戳;如果不能精确到秒,那么可以在02:02左右时删除。

  cat local.log | grep -A 100 数字时间戳

  • 利用mongrestore命令执行恢复操作:

  找到误操作的时间点,会截止在这个时间点不恢复:

  mongorestore -h 127.0.0.1:27030 --oplogReplay --oplogLimit 数字时间戳:1 /home/bien/bakcup/

  2、物理恢复

  将备份好的文件复制到待恢复的机器上,使用mongod直接拉起Mongo进程就可以完成物理恢复了。

MongoDB的备份和恢复

标签:版本   log   数据库名   back   修改   命令参数   rest   gzip   自身   

原文地址:https://www.cnblogs.com/bien94/p/12369341.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!