如何进行mongdb备份恢复
admin
2023-04-11 20:43:26
0

一、物理备份(拷贝文件)

#!/bin/sh
DATE=`date +%Y%m%d`
DEL_DATE=$(date -d '-30 days' "+%Y%m%d")
HOST=10.10.17.27
PORT=27000
USER=admin
PASSWORD=123456
DATA_DIR="/data/mongodb/navy_db/db"
BACKUP_PATH="/data/mongodbbackup/$DATE"

date +%Y%m%d%H%M >>/data/log/mongodb_bak.log
#第一步锁表
lock()
{
echo "db.fsyncLock()"|  mongo  --host $HOST --port $PORT -u $USER -p $PASSWORD  admin
}
execute()
{
  lock
  if [ $? -eq 0 ]
  then
    echo "mongodb lock successfully!" >>/data/log/mongodb_bak.log
  else
    echo "mongodb lock fail!" >>/data/log/mongodb_bak.log
  fi
}
execute
#第二步备份
back()
{
rsync -av $DATA_DIR $BACKUP_PATH/
}
execute()
{
  back
  if [ $? -eq 0 ]
  then
    echo "mongodb back successfully!" >>/data/log/mongodb_bak.log
  else
    echo "mongodb back fail!" >>/data/log/mongodb_bak.log
  fi
}
execute
#第三部解锁
unlock()
{
echo "db.fsyncUnlock()"|  mongo  --host $HOST --port $PORT -u $USER -p $PASSWORD  admin
}
execute()
{
  unlock
  if [ $? -eq 0 ]
  then
    echo "mongodb unlock successfully!" >>/data/log/mongodb_bak.log
  else
    echo "mongodb unlock fail!" >>/data/log/mongodb_bak.log
  fi
}
execute
#删除历史数据
rm -rf "/data/mongodbbackup/${DEL_DATE}/"

PS:

物理备份只能全库恢复,不能恢复单个表

恢复步骤:

1、停止需要恢复的实例
2、备份清空/data/mongodb/navy_db/db目录
3、拷贝/data/mongodbbackup/$DATE下面的所有文件和文件夹到/data/mongodb/navy_db/db目录
4、chown mongod:mongod /data/mongodb/navy_db/db/ -R
5、启动实例

二、mongodump备份

#!/bin/sh
DATE=`date +%Y%m%d`
DEL_DATE=$(date -d '-30 days' "+%Y%m%d")
HOST=10.10.17.27:27000
USER=admin
PASSWORD=123456
BACKUP_PATH="/backup/mongodbbackup/$DATE"
date +%Y%m%d%H%M >>/data/log/mongodb_bak.log
start()
{
mongodump -h $HOST -u $USER -p $PASSWORD   -o $BACKUP_PATH
}
execute()
{
  start
  if [ $? -eq 0 ]
  then
    echo "mongodb back successfully!" >>/data/log/mongodb_bak.log
  else
    echo "mongodb back fail!" >>/data/log/mongodb_bak.log
  fi
}
execute
rm -rf "/backup/mongodbbackup/${DEL_DATE}/"

恢复:

1、全库恢复

mongorestore --host 10.10.17.27 --port  27000   /backup/mongodbbackup/20150818/

2、单集合(表的概念)恢复

 mongorestore --host 10.10.17.27 --port  27001 --db navy_db_new --collection navy_db_table_new   /backup/mongodbbackup/20150818/navy_db/navy_db_table.bson

三、复制集备份

#!/bin/sh
DATE=`date +%Y%m%d`
DEL_DATE=$(date -d '-30 days' "+%Y%m%d")
HOST="dbset/10.10.17.27:27000,10.10.17.26:27000"
USER=admin
PASSWORD=123456
BACKUP_PATH="/data/mongodbbackup/$DATE"
date +%Y%m%d%H%M >>/data/log/mongodb_bak.log
start()
{
mongodump -h $HOST -u $USER -p $PASSWORD  --oplog  -o $BACKUP_PATH
}
execute()
{
  start
  if [ $? -eq 0 ]
  then
    echo "mongodb back successfully!" >>/data/log/mongodb_bak.log
  else
    echo "mongodb back fail!" >>/data/log/mongodb_bak.log
  fi
}
execute
rm -rf "/backup/mongodbbackup/${DEL_DATE}/"

PS:

备份复制集和备份单个mongodb实例用mongodump备份的方法差不多,只是host的写法不一样,需要指定复制集名称,还有就是加上 --oplog参数,来跟踪备份时主库上发生的所有写操作,获取一个pointin-time快照,否则备份的状态将与集 群中其他节点不匹配。在恢复时,还必须创建oplog,并指定--oplogReplay参数来应用这些操作,否则恢复的成员将不知道从何处开始同步,从 而在某个时间点上与源服务器保持一致。

恢复:

1、降复制集中要恢复的节点移除

rs.remove("10.10.17.26:27000")

2、运行mongorestore --oplogReplay命令

mongorestore --host 10.10.17.26 --port  27000 --oplogReplay  /data/mongodbbackup/20150820/

3、创建oplog

use local 
db.createCollection("oplog.rs", {"capped" : true, "size" : 10000000})

4、恢复oplog

mongorestore --host 10.10.17.26 --port  27000 -d local -c oplog.rs  /data/mongodbbackup/20150820/oplog.bson

5、将该节点加入到复制集 

 rs.add("10.10.17.26:27000")

相关内容

热门资讯

辟谣!河南公布7起网络谣言典型... 4月,河南持续做好涉企业、“三农”、公共政策、社会热点、文化旅游网络谣言的发现辟除,有力打击谣言传播...
企业买AI,从“尝鲜”变成“算... 【大河财立方 记者 陈薇】以前企业采购人工智能大模型,大多只是抱着试一试的心态:这笔费用归在创新预算...
宇树发布全球首款量产版载人机甲... 【大河财立方消息】 5月12日,据宇树科技官微,宇树发布GD01载人变形机甲,定价390万元起。据介...
中国驻荷兰使馆提醒:在荷中国公... 根据世界卫生组织近日通报,一艘极地探险邮轮上出现了汉坦病毒感染病例。截至5月11日,造成至少8例感染...
新乡市城管局公布典型案例:非法... 近日,新乡市城市管理局对外公布一起危害城市水环境安全的污染环境典型案例。该案经多部门联合溯源、侦办、...
敲诈900多家网店 买家恶意下... 先是申请“仅退款”企图免费得到商品,被商家拒绝后就投诉店铺、恶意下单、索要“和解费”,网店老板曹先生...
公司购买50箱“飞天茅台”,竟... 邢台一公司购买50箱飞天茅台酒,经鉴定竟有41箱为假冒茅台酒,仅9箱为真茅台酒。经查,涉案男子龚某从...
穿越周期 不止“万亿” ——从... 洛阳钼业巴西金矿一角。市民在郑州金融岛参加由好想你公司主办的“好好生活”户外活动。光力科技半导体晶圆...
魏平政出线几率高!国民党整合拼... 海峡导报综合报道 国民党迟未公布彰化县长人选,地方盛传,周三国民党中常可能会有答案,引发关注。对此,...
人均奖金600万,知道内存为什... 唯物的中国芯片产业深度观察AI带动存储狂飙,韩国存储大厂SK海力士也跟着起飞。近日,有投行预测其年终...