mongoDB备份/恢复策略

 简单的replica set 模式的集群,可以直接使用全量物理备份+oplog持续增量备份的策略。

条件:

  • 为了不影响mongodb的正常服务,在集群中添加hidden结点。该结点会自动同步mongodb的数据,参与选举,但是并不对外提供服务。
  • 查看oplog的承载时间,时长一定要cover全量备份的时间
  1. lock  hidden/sacondary结点(可选操作)
    =>db.fsynclock()
  2. dump   data文件
    tar czvf data.tar.gz /data
    rsync -av testdb.tar.gz mongo-server-new01:/data/
    ##使用aws创建快照
    mongodump --oplog
  3. dump oplog库,作为计划任务持续拉取
    mongodump -h mongoserver01 -uroot -proot --authenticationDatabase admin -d local -c oplog.rs -o /data/backup/oplog
  4. unlock hidden结点(可选操作)
    =>db.fsyncUnclock()

 

数据恢复

  1. 恢复数据
    mongorestore --oplogReplay

     

  2. 增量恢复
    bsondump oplog.rs.bson
    
    mongorestore --oplogReplay /data/backup/oplog/oplog.bson

 

从hidden节点备份,每天全量备份一次

mongodump -h mongoserver01 -uroot -proot --authenticationDatabase admin --oplog -o /data/backup/fullMongo

500M:1min

持续拉取oplog增量备份

mongodump -h mongoserver01 -uroot -proot --authenticationDatabase admin -d local -c oplog.rs -o /data/backup/oplog

4G:3min

定期巡检备份有效性

cp -f /data/backup/oplog/oplog.rs.bson   /data/backup/fullMongo/oplog.bson

mongorestore -h mongotest -uroot -proot --authenticationDatabase --oplogReplay /data/backup/fullMongo

数据恢复

 

 

 

各种角色权限对应如下:

hidden节点配置

rs.stepDown()

添加hidden节点

PRIMARY>rs.add({host:"192.168.0.1:27017",priority:0,hidden:true})

#设置为0,永远不会成为主节点

PRIMARY>rs.reconfig(config)

PRIMARY>rs.status();

 

全量备份dump的是全部的数据库?

不是的,local并不会dump下来,里面存储了集群信息。dump的是数据和帐号信息

 

 

为什么是每天一次

=>rs.printReplicationInfo()

configured oplog size: 4366MB

log length start to end :166920secs (46.37hrs)

oplog first event time:Tue May 14 2019 15:18:59 GMT+0800 (CST)

oplog last event time:Thu May 16 2019  13:40:59 GMT+0800 (CST)

now:Thu May 16 2019 13:48:03 GMT+0800 (CST)

 

修改oplog大小,重建oplog.rs

secondary>db.shutdownServer()

mongod --port 27018 --dbpath /srv/mongodb

mongodump --db local --collection 'oplog.rs' --port 27018

secondary>use local

secondary>db

 

什么是oplog

local:oplog.rs

 

sharded cluster备份与恢复

  1. 禁用balancer,connect to mongos
    =>user config
    =>sh.stopBalancer()
  2. lock replica set secondary member
    =>db.fsyncLock()
  3. lock config secondary server
    =>db.fsynclock()
  4. dump config server
    mongodump --oplog
  5. unlock secondary member
    =>db.fsyncUnclock()
  6. dump replica set secondary member
    mongodump --oplog
  7. unlock config secondary server
    =>db.fsyncUnlock()
  8. 开启balancer
    =>sh.setbalancerState(true)

restore

  1. 搭建集群,保持主机名一致,并关闭mongos
  2. restore shard data
    mongorestore --drop --oplogReplay /data/backup/shardA

     

  3. restore config data
    mongorestore --drop --oplogReplay /data/dump/configData

     

  4. 重启所有结点,验证集群可用性
    =>db.printShardingStatus()
    =>show collections

     

转载于:https://www.cnblogs.com/bianhongxiang/p/10893742.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值