zoukankan      html  css  js  c++  java
  • MongoDB的备份和恢复

      (一)备份

      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进程就可以完成物理恢复了。

  • 相关阅读:
    Linux与Mac通信
    练习
    删除重复文件
    解压压缩文件
    查询压缩文件的大小
    修改文件夹和文件名字
    删除文件和文件夹
    移动文件和文件夹
    shutil复制文件夹
    shutil复制文件
  • 原文地址:https://www.cnblogs.com/bien94/p/12369341.html
Copyright © 2011-2022 走看看