mongdb备份恢复

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介:
原创作品,允许转载,转载时请务必以超链接形式标明文章  原始出处 、作者信息和本声明。否则将追究法律责任。 http://navyaijm.blog.51cto.com/4647068/1686280

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#!/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
3
4
5
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备份

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/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、全库恢复

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

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

1
  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

三、复制集备份

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/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、降复制集中要恢复的节点移除

1
rs.remove( "10.10.17.26:27000" )

2、运行mongorestore --oplogReplay命令

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

3、创建oplog

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

4、恢复oplog

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

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

1
  rs.add( "10.10.17.26:27000" )


本文出自 “屌丝运维男” 博客,请务必保留此出处http://navyaijm.blog.51cto.com/4647068/1686280

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
8天前
|
JSON NoSQL 安全
MongoDB的导入导出、备份恢复总结
这篇文章是关于MongoDB的导入导出、备份恢复操作的总结。
41 4
|
5月前
|
SQL 关系型数据库 MySQL
在OceanBase数据库中,mysqldump工具是可以用于数据备份的
【2月更文挑战第2天】在OceanBase数据库中,mysqldump工具是可以用于数据备份的
166 6
|
11月前
|
存储 NoSQL 关系型数据库
数据库数据恢复——MongoDB数据库数据恢复案例
MongoDB数据库是文档数据存储库,将文档存储在集合之中,不是像MySQL一样的关系型数据库。 MongoDB数据库是开源数据库,同时提供具有附加功能的商业版本。 MongoDB数据库中的数据是以键值对(key-value pairs)的形式显示的,因此在模式设计上数据库受到的约束少,非常适合具有快速增长或其他变化需求的数据。
数据库数据恢复——MongoDB数据库数据恢复案例
|
11月前
|
存储 NoSQL Shell
如何将阿里云WiredTiger引擎的MongoDB物理备份文件恢复至自建数据库
数据库操作一直是一个比较敏感的话题,动不动“删库跑路”,可见数据库操作对于一个项目而言是非常重要的,我们有时候会因为一个游戏的严重bug或者运营故障要回档数据库,而你们刚好使用的是阿里云的Mongodb,那么这篇文章将给你提供一个思路(或许你按照阿里云官网的文档一顿操作下来,并不是那么顺利,有一些报错,无法登录...)
|
存储 SQL 数据库连接
数据库的数据迁移与备份?
数据库的数据迁移与备份?
|
监控 机器人 关系型数据库
数据库的备份恢复与监控|学习笔记
快速学习数据库的备份恢复与监控
125 0
数据库的备份恢复与监控|学习笔记
|
监控 机器人 关系型数据库
数据库的备份恢复与监控
快速学习数据库的备份恢复与监控
218 0
数据库的备份恢复与监控
|
JSON NoSQL MongoDB
mongoDB数据导入导出与备份恢复
mongoDB数据导入导出与备份恢复
|
JSON 数据库 数据安全/隐私保护
Mongo数据导入导出备份恢复
Mongo数据导入导出备份恢复
187 0
|
SQL Cloud Native 关系型数据库
PolarDB-X 1.0-用户指南-数据恢复表-备份恢复
备份恢复 本文将介绍备份恢复的两种方式及方法。
204 0
PolarDB-X 1.0-用户指南-数据恢复表-备份恢复
下一篇
无影云桌面