mongdb备份恢复

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。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

时间: 2024-11-17 21:39:36

mongdb备份恢复的相关文章

单搞定ASA备份/恢复程序

备份|程序|恢复 Adaptive Server Anywhere(本文中简称ASA) 是PowerBuilder(本文中简称PB)自带的数据库管理系统,可作为小型应用系统的数据库服务器.而数据库的备份/恢复是一项基本的工作,要想用短短几分钟就完成这类程序的编写,能做到吗?本文就将为大家介绍一个用PB编写的ASA备份/恢复程序,只需很短的时间,就可以编制完成并运用在以ASA作为数据环境的小型应用上. 一 备份程序先来看看备份程序部分的写法.在窗体上建一文本框 sle_1,用来显示备份

MySQL 数据库备份恢复和乱码问题 续

在我转到wordpress之后第一个考虑的是它的数据库备份恢复问题,因为写bloger都知道,自己的blog记录的都是自己需要的宝贵的资料和文字,如果因为各种未知因素导致数据库崩溃或者空间商出了问题,丢失了数据的话,无疑是一种非常巨大的痛苦和损失. 所以在我blog里面有好几篇资料文章或者自己心得文章来讨论mysql数据库备份恢复和乱码问题. 之前那些文章讨论结果已经暂时能满足我数据库备份和恢复问题了,但是始终有个让我不能完全安心的地方,那就是用PMA恢复的时候,使用的是上传机制,那么PHP默认

数据库备份/恢复方案

备份|恢复|数据|数据库 利用SQL语言,实现数据库的备份/恢复的功能 体现了SQL Server中的四个知识点: 1.   获取SQL Server服务器上的默认目录 2.   备份SQL语句的使用 3.   恢复SQL语句的使用,同时考虑了强制恢复时关闭其他用户进程的处理 4.   作业创建SQL语句的使用   /*1.--得到数据库的文件目录  @dbname 指定要取得目录的数据库名   如果指定的数据不存在,返回安装SQL时设置的默认数据目录   如果指定NULL,则返回默认的SQL备

使用Nbu备份恢复Microsoft SQL

1 Nbu备份恢复Microsoft SQL 1.1 创建备份角本 在备份client端打开"NetBackup MS SQL Client" 添加验证凭据 选择set sql server connection,输入SQL server信息 更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/soft/tools/

Oracle RAC ASM disk header 备份恢复与重建示例说明

select * from dba_data_files; col name format a15 col failgroup format a20 col path format a30 oracle KFED 和 KFOD 工具说明 1. Check v$asm_disk.header_status toverify that the disk header is in a "MEMBER" state.检查asmdisk header 的状态. select path,heade

备份恢复升级netscreen SSG140 Boot Loader及ISO

步骤要领: .备份恢复配置文件及ISO .升级新版本的boot loader及ISO 备份恢复配置文件及ISO 由于备份恢复这块,网上转载一篇特别详细给大家备用,此处我就不废话 为防止Juniper防火墙设备故障情况下造成网络中断,保障用户业务不间断运行,现针对Juniper防火墙故障情况下的快速恢复做具体描述. 一.设备重启动: Juniper防火墙在工作期间出现运行异常时,如需进行系统复位,可通过console线缆使用reset命令对防火墙进行重启,重启动期间可以在操作终端上查看防火墙相关启

有关puppet agent端三种备份恢复方案探讨研究

备份方案一.通过自定义facter结合元素backup进行备份恢复 一.facter部署 1.创建目录结构 [root@puppetserver modules]# mkdirpublic/{modules,manifests,files,lib/facter} -p 2.打开模块中的插件功能 [root@puppetserver public]# vim/etc/puppet/puppet.conf [main] pluginsync = true 3.编写自定义fact [root@pupp

mysql备份恢复中的常见错误

从A主机备份到B主机 mysqldump -uroot  -p vw>vw.sql 现备份数据库文件,需要恢复到目标机B,B的数据库版本为5.5.23,A机器的mysql版本为5.0.22 mysql>source /root/vw.sql; -------------------- Query OK, 6748 rows affected (0.13 sec) Records: 6748 Duplicates: 0 Warnings: 0 Query OK, 6807 rows affect

MYSQL教程:使用备份恢复数据

恢复过程包括两个信息源---备份文件和二进制日志,备份文件可使用数据恢复到执行备份时的状态,而二进制日志可恢复到发生故障时的状态.下面分别介绍如何利用这两个文件恢复一个数据库或恢复单个数据表. 恢复整个数据库的步骤: 把需恢复的数据库的整个目录的内容拷贝到其它地方,以备用. 使用最近的备份文件重载数据库.如果使用mysqldump生成的备份,则可使用它们作为mysql的输入重载:如果是通过拷贝数据库目录来备份的,则要关闭数据库服务器,再把备份重新拷贝到数据目录,再重启数据库服务器. 通过二进制日