我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MongoDB备份和恢复方案

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MongoDB备份和恢复方案

MongoDB备份和恢复方案

  • Oplog介绍

    1. 可用于生产环境的备份与恢复脚本

    脚本仓库

    1. 备份命令
    a) 单DB两种方法
        (1)mongodump -h localhost:27017 -d db[不能多个] -o /data_dump -u xxx -p xxx --authenticationDatabase ‘admin’
        (2)mongodump -h localhost:27017 -d db -o ./data_dump -u xxx -p xxx(具体这个DB的用户)
    b) 全量+oplog增量
        mongodump -h localhost:27017 -o ./data_dump -u xxx -p xxx --oplog --quiet(隐藏日志)
    

    恢复命令

    a) 单DB两种方法
        (1)mongorestore -h localhost:27017 -d db --dir ./data_dump /db -u xxx -p xxx --authenticationDatabase "admin"
        (2)mongorestore -h localhost:27017 -d db --dir ./data_dump/db -u xxx -p xxx
    b) 恢复+oplog回放
         mongorestore -h localhost:27017./data_dump -u xxx -p xxx –oplogReplay --quiet(隐藏日志)
    

    恢复到指定时间点

    导出主节点上的 oplog:
    mongodump --host 127.0.0.1 -d local -c oplog.rs
    可以通过—query 参数添加时间范围
    
    使用 bsondump 查看导出的 oplog,找到需要截止的时间点:
    例如:{ "ts" : Timestamp(1577355175, 1), "t" : NumberLong(23), "h" : NumberLong(0), "v" : 2, "op" : "c","ns" : "foo.$cmd", "ui" : UUID("767b3a2b-a1cd-4db8-a74a-71ce9711f368"), "o2" : { "numRecords" : 1 },"wall" : ISODate("2019-12-26T10:12:55.436Z"), "o" : { "drop" : "employees" } }
    
    恢复到指定时间点
    利用--oplogLimit指定恢复到这条记录之前
    mongorestore -h 127.0.0.1 --oplogLimit "1577355175:1" --oplogFile dump/local/oplog.rs <空文件夹>
    

    RPO(RecoveryPointObjective复原点目标,指能容忍的最大数据丢失量)

    Secondary延迟备份

    设置延时节点
    cfg = rs.conf()
    cfg.members[1].priority=0
    cfg.members[1].hidden=true
    cfg.members[1].slaveDelay=86400
    rs.reconfig(cfg)
    

    Secondary延迟恢复

    从Secondary恢复数据的方法:
    1、删除Primary中的testts库
    2、mongodump -h localhost:30011 -d testts -o ~/data_dump0401 -u xxx -p xxx --authenticationDatabase "admin"
    3、mongorestore -h localhost:27017 -d testts --dir ./data_dump0401/testts -u xxx -p xxx --authenticationDatabase "admin"
    

    部署脚本

    目前全量备份采用一周一次,增量备份采用一个小时一次,通过crontab来制定计划任务
    [mongod@xxx toolbox]$ crontab –e
    0 */1 * * * /bin/sh $HOME/toolbox/mongodb_backup_incremental.sh > /dev/null 2>&1
    0 1 * * 7 /bin/sh $HOME/toolbox/mongodb_backup_all.sh > /dev/null 2>&1
    

    常见错误

    1)

    Failed: restore error: error applying oplog: applyOps: not authorized on admin to execute command { applyOps: [ { ts: Timestamp(1584405919, 1), h: 6249566449687893566, v: 2, op: "u", ns: "config.system.sessions", o: { $v: 1, $set: { lastUse: new Date(1584405919215) } }, o2: { _id: { id: UUID("d3558387-2eca-4d12-81ff-519b45c29af6"), uid: BinData(0, D98E3AF3AA9DE1E389AD41192C5A890F20F87082C7F958241BCACB06E71051FC) } } } ], $db: "admin" }
    解决方法(在admin数据库中执行):
    db.adminCommand({ createRole: "restoreEx", privileges: [ { resource: { db: "config", collection: "system.sessions" }, actions: [ "find", "update", "insert", "remove" ] }, ],  roles: [ { role: "restore", db: "admin" } ],  writeConcern: { w: "majority" , wtimeout: 5000 }})
    db.createUser({user:“restore”, pwd:”pwd“, roles:[{role:”restoreEx“, db:”admin“}, {role:"readWriteAnyDatabase", db:"admin"}]})
    

    2)Path与—dir不能同时用

    3)

    默认都加上-u xxx -p "xxx" --authenticationDatabase "admin"这个鉴权吧
    

    4)

    db.tttss.insert({bbb:”test delay”}, { writeConcern: { w:”majority(要用这个,不然用w:3就要等包括延时节点在内的3个节点都要返回的)", wtimeout: 5000 } })
    

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    MongoDB备份和恢复方案

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档

    猜你喜欢

    MongoDB备份和恢复方案

    Oplog介绍可用于生产环境的备份与恢复脚本脚本仓库备份命令a) 单DB两种方法 (1)mongodump -h localhost:27017 -d db[不能多个] -o /data_dump -u xxx -p xxx --authenticati
    MongoDB备份和恢复方案
    2019-01-12

    MongoDB-备份恢复

    备份工具(1)** mongoexport/mongoimport(2)***** mongodump/mongorestore 备份工具区别在那里?应用场景总结:mongoexport/mongoimport:json csv1.异构平台迁移 mysql
    
	MongoDB-备份恢复
    2017-09-12

    mongodb备份和恢复的方法是什么

    在MongoDB中,可以使用mongodump和mongorestore命令来备份和恢复数据库。备份数据:使用mongodump命令来备份整个数据库或指定的集合。示例:mongodump --db --ou
    mongodb备份和恢复的方法是什么
    2024-04-09

    mongodb的备份与恢复

    1.MongoDB 如何备份?>[root@service bin]# mongodump    备份数据   进行备份之后,如果你没指定备份目录会在当前目录自动生成dump备份文件 数据备份成功效果图  当前目录多了个copy文件,也就是我们刚备份时候的库名
    mongodb的备份与恢复
    2018-12-18

    mongodb数据备份和恢复的方法是什么

    在MongoDB中,可以使用mongodump和mongorestore命令来备份和恢复数据。下面是备份和恢复数据的步骤:备份数据:使用mongodump命令可以备份MongoDB数据库的数据。以下是备份数据的命令:mongodump -
    mongodb数据备份和恢复的方法是什么
    2024-04-10

    mongodb怎么恢复备份数据

    要恢复 MongoDB 的备份数据,可以按照以下步骤进行操作:1. 首先,确保你已经创建了一个 MongoDB 的备份。备份可以通过使用 mongodump 命令或者其他备份工具来创建。2. 打开命令行终端,并导航到 MongoDB 的 b
    2023-08-31

    Linux备份和恢复的方法

    这篇文章主要介绍“Linux备份和恢复的方法”,在日常操作中,相信很多人在Linux备份和恢复的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux备份和恢复的方法”的疑惑有所帮助!接下来,请跟着小编
    2023-06-13

    Ruby与Linux系统备份恢复方案

    在这个方案中,我们将使用 Ruby 编程语言和 rsync 工具来实现 Linux 系统的备份和恢复安装 Ruby 和 rsync在开始之前,请确保您的 Linux 系统上已经安装了 Ruby 和 rsync。如果没有,请使用以下命令安装:
    Ruby与Linux系统备份恢复方案
    2024-09-15

    编程热搜

    目录