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

如何进行mongdb备份恢复

短信预约 -IT技能 免费直播动态提醒
省份

北京

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

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

看不清楚,换张图片

免费获取短信验证码

如何进行mongdb备份恢复

如何进行mongdb备份恢复,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

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

#!/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")

关于如何进行mongdb备份恢复问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

免责声明:

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

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

如何进行mongdb备份恢复

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

下载Word文档

猜你喜欢

Cassandra如何进行数据备份和恢复

Cassandra是一个分布式数据库系统,具有高可用和容错能力。要对Cassandra进行数据备份和恢复,可以采取以下步骤:数据备份:使用nodetool命令行工具来备份数据。可以使用nodetool snapshot命令来创建数据快照,
Cassandra如何进行数据备份和恢复
2024-04-09

如何在Oracle中进行备份恢复测试

备份恢复测试在Oracle数据库中的步骤为了确保数据库完整性和可用性,本指南详细介绍了在Oracle数据库中进行备份恢复测试的步骤:准备测试环境创建备份模拟数据损坏恢复数据库验证恢复优化策略记录和报告结果最佳实践包括定期测试、自动化、收集反馈和定期审查策略,以确保有效性和可靠性。
如何在Oracle中进行备份恢复测试
2024-04-13

MySQL中如何进行数据备份和恢复

MySQL 中可以通过使用 mysqldump 工具来进行数据备份和恢复操作。以下是备份和恢复的步骤:数据备份:打开命令行工具并登录到 MySQL 数据库。使用以下命令备份整个数据库:mysqldump -u username -p d
MySQL中如何进行数据备份和恢复
2024-03-06

SQLite中如何进行数据备份和恢复

在SQLite中进行数据备份和恢复可以采用以下方法:数据备份:使用SQLite的命令行工具进行数据备份:sqlite3 original.db .dump > backup.sql这将会将数据库original.db的内容导出到一个名为
SQLite中如何进行数据备份和恢复
2024-03-14

如何在Oracle中进行备份恢复测试

在Oracle中进行备份恢复测试的步骤如下:创建一个测试数据库:首先,在Oracle数据库中创建一个新的测试数据库,用于进行备份恢复测试。进行备份操作:使用Oracle的备份工具(如RMAN)对测试数据库进行备份操作,将数据库的数据和日志备
如何在Oracle中进行备份恢复测试
2024-04-09

MySQL中如何进行备份和恢复数据

在MySQL中,可以使用mysqldump命令来备份数据库,使用mysql命令来恢复数据库。备份数据:mysqldump -u username -p database_name > backup.sql恢复数据:mysql -u u
MySQL中如何进行备份和恢复数据
2024-04-09

CentOS中如何进行系统备份和恢复

在CentOS中进行系统备份和恢复通常使用工具例如tar、rsync或者dd来实现。下面是使用这些工具进行系统备份和恢复的步骤:使用tar备份系统:备份系统:使用以下命令将整个系统备份到一个tar归档文件中:tar cvpzf backup
CentOS中如何进行系统备份和恢复
2024-03-13

如何在Redis中进行数据备份和恢复

在Redis中进行数据备份和恢复可以通过以下两种方法:使用命令行工具进行备份和恢复:备份数据:可以使用Redis提供的命令行工具redis-cli来执行SAVE命令,将当前数据库中的数据保存到一个.rdb文件中。命令如下:$ redis-c
如何在Redis中进行数据备份和恢复
2024-04-09

如何在MySQL中进行数据备份和恢复

在MySQL中进行数据备份和恢复可以使用以下几种方法:使用mysqldump命令进行数据备份:备份数据库:mysqldump -u -p > backup.sql备
如何在MySQL中进行数据备份和恢复
2024-04-09

如何使用MySQL进行数据备份和恢复?

如何使用MySQL进行数据备份和恢复?数据库中的数据对于任何企业或个人而言都是非常重要的。由于各种原因(如硬件故障、人为错误或恶意攻击等),数据可能会丢失或损坏。因此,定期进行数据库备份是非常重要的。MySQL作为最受欢迎的开源关系型数据库
2023-10-22

编程热搜

目录