①文件系统快照(snapshot)

生成文件系统快照这个方法需要满足两个条件:

1:文件系统本身支持快照技术

2:运行mongod时必须开启日记系统

其恢复就是快照的恢复,当然,恢复的时候,确保mongod没有开启

②复制文件系统

冷备份:就是把mongod停了,然后拷贝相应的数据文件,最好是把一个数据库相应的数据文件夹完整的拷出,然后恢复的时候完整的拷入。--最简单的

热备份:就是mongod在运行中,可以使用db.fsyncLock();来锁定数据库,然后进行数据文件的拷贝,拷贝完成后,使用db.fsyncUnLock();解除锁定。恢复的时候,需要把mongod停了,然后把文件拷入。

③使用mongodump来备份

这个方式有些缺点,比如速度慢,处理副本集的时候也很容易出问题。但对于单独的数据库和集合还是一个好选择的。

mongodump的参数与mongoexport的参数基本一致

参数

参数说明

-h

指明数据库宿主机的IP

-u

指明数据库的用户名

-p

指明数据库的密码

-d

指明数据库的名字

-c

指明collection的名字

-o

指明到要导出的文件名

-q

指明导出数据的过滤条件

--authenticationDatabase

验证数据的名称

--gzip

备份时压缩

--oplog

use oplog for taking a point-in-time snapshot

mongodump参数实践

全库备份

mongodump -h 10.0.0.152:27017 -uroot -proot --authenticationDatabase admin -o /home/mongod/backup/full

备份test库

mongodump -h 10.0.0.152:27017 -uroot -proot --authenticationDatabase admin -d test -o /home/mongod/backup/

备份test库下的vast集合

mongodump -h 10.0.0.152:27017 -uroot -proot --authenticationDatabase admin -d test -c vast -o /home/mongod/backup/

压缩备份库

mongodump -h 10.0.0.152:27017 -uroot -proot --authenticationDatabase admin -d test -o /home/mongod/backup/ --gzip

压缩备份单表

mongodump -h 10.0.0.152:27017 -uroot -proot --authenticationDatabase admin -d test -c vast -o /home/mongod/backup/ --gzip
④使用mongorestore来恢复

mongorestore与mongoimport参数类似

参数

参数说明

-h

指明数据库宿主机的IP

-u

指明数据库的用户名

-p

指明数据库的密码

-d

指明数据库的名字

-c

指明collection的名字

-o

指明到要导出的文件名

-q

指明导出数据的过滤条件

--authenticationDatabase

验证数据的名称

--gzip

备份时压缩

--oplog

use oplog for taking a point-in-time snapshot

--drop

恢复的时候把之前的集合drop掉

全库备份中恢复单库(基于之前的全库备份)

mongorestore -h 10.0.0.152:27017 -uroot -proot --authenticationDatabase admin -d test --drop /home/mongod/backup/full/test/

恢复test库

mongorestore -h 10.0.0.152:27017 -uroot -proot --authenticationDatabase admin -d test /home/mongod/backup/test/

恢复test库下的vast集合

mongorestore -h 10.0.0.152:27017 -uroot -proot --authenticationDatabase admin -d test -c vast /home/mongod/backup/test/vast.bson

--drop参数实践恢复

# 恢复单库 mongorestore -h 10.0.0.152:27017 -uroot -proot --authenticationDatabase admin -d test --drop /home/mongod/backup/test/ # 恢复单表 mongorestore -h 10.0.0.152:27017 -uroot -proot --authenticationDatabase admin -d test -c vast --drop /home/mongod/backup/test/vast.bson
⑤mongodb的备份准则

只针对replica或master/slave,满足这些准则MongoDB就可以进行point-in-time恢复操作:

1任意两次数据备份的时间间隔(第一次备份开始到第二次备份结束)不能超过oplog时间窗口覆盖范围。

2在上次数据备份的基础上,在oplog时间窗口没有滑出上次备份结束的时间点前进行完整的oplog备份。请充分考虑oplog备份需要的时间,权衡服务器空间情况确定oplog备份间隔。

实际应用中的注意事项:

  1. 考虑到oplog时间窗口是个变化值,请关注oplog时间窗口的具体时间。
  2. 在靠近oplog时间窗口滑动出有效时间之前必须要有足够的时间dump出需要的oplog.rs,请预留足够的时间,不要顶满时间窗口再备份。
  3. 当灾难发生时,第一件事情就是要停止数据库的写入操作,以往oplog滑出时间窗口。特别是像上述这样的remove({})操作,瞬间就会插入大量d记录从而导致oplog迅速滑出时间窗口。

分片集群的备份注意事项

1、备份什么?

  (1)configserver

  (2)每一个shard节点

2、备份需要注意什么?

  (1)元数据和真实数据要有对等性(blancer迁移的问题,会造成config和shard备份不一致),要进行分片集备份,需要先关闭均衡器。

   (2)不同部分备份结束时间点不一样,恢复出来的数据就是有问题的。建议对备份节点进行备份,最好是采用复制文件系统的方式。

附录:Aliyun备份策略

1 MongoDB云数据库备份/恢复

备份策略:

  1. 从hidden节点备份
  2. 每天一次全量备份
  3. 持续拉取oplog增量备份
  4. 定期巡检备份有效性
  5. 恢复时克隆到新实例

2 全量备份方法

3 逻辑备份流程 - mongodump

特点:

  1. 全量遍历所有数据、
  2. 备份、恢复慢
  3. 对业务影响较大
  4. 无需备份索引、恢复时重建
  5. 通用性强

4 物理备份流程

备份特点

  1. 拷贝数据目录所有文件,效率高
  2. 备份、恢复快
  3. 对业务影响较小
  4. 跟数据库版本、配置强关联

5 逻辑备份 vs 物理备份

 

逻辑备份

物理备份

备份效率

数据库接口读取数据

拷贝物理文件

恢复效率

下载备份集 +  导入数据 +  建立索引

下载备份集 +  启动进程

备份影响

直接与业务争抢资源

备份集大小

比原库小

无需备份索引数据

与原库相同

兼容性

兼容绝大部分版本

可跨存储引擎

依赖存储布局

 
 
 
 
 
 
 
 
 
 
 
 
 

第48章:MongoDB-备份和恢复的更多相关文章

  1. MongoDB 备份(mongodump)恢复(mongorerstore) 导出 (Mongoexport) 导入( Mongoimport)

    MongoDB 备份(mongodump) 在Mongodb中我们使用mongodump命令来备份MongoDB数据.该命令可以导出所有数据到指定目录中. mongodump命令可以通过参数指定导出的 ...

  2. 通过mongodump和mongorestore实现Mongodb备份和恢复

    Mongodb自带了mongodump和mongorestore这两个工具来实现对数据的备份和恢复. mongodump能够在Mongodb运行时进行备份,它的工作原理是对运行的Mongodb做查询, ...

  3. MongoDB备份和恢复

    mongodump备份数据 该命令可以导出所有数据到指定目录中, 也能通过参数指定备份服务器 mongodump -h dbhost -d dbname -o dbdirectory dbhost: ...

  4. MongoDB初试备份及恢复

    MongoDB作为文档数据库,有 1.登录MongoDB官网,地址:https://www.mongodb.com/download-center#community  , 根据自己操作系统下载相应版 ...

  5. MongoDB备份(mongodump)和恢复(mongorestore)

    MongoDB提供了备份和恢复的功能,分别是MongoDB下载目录下的mongodump.exe和mongorestore.exe文件 1.备份数据使用下面的命令: >mongodump -h ...

  6. MongoDB整库备份与还原以及单个collection备份、恢复方法

    mongodb数据库维护离不开必要的备份.恢复操作,而且一般不会出错,所以我们在使用的时候大部分时候使用备份和恢复操作就可以了   mongodump.exe备份的原理是通过一次查询获取当前服务器快照 ...

  7. MongoDB学习总结(六) —— 数据库备份和恢复

    我们都知道数据库数据经常备份是多么的重要,MongoDB作为一个数据库系统,自然提供了完善,丰富而且好用的备份与恢复机制. 以下介绍三种数据库备份和恢复的方式 > 数据目录直接拷贝 数据库目录直 ...

  8. 第五章 MySQL事务,视图,索引,备份和恢复

    第五章 MySQL事务,视图,索引,备份和恢复 一.事务 1.什么是事务 事务是一种机制,一个操作序列,它包含了一组数据库操作命令,并且把所有的命令作为一个整体一起向系统提交或撤销操作请求.要么都执行 ...

  9. MongoDB 备份(mongodump)与恢复(mongorestore)

    MongoDB  备份(mongodump)与恢复(mongorestore) 备份:使用mongodump命令导出所有数据库到指定目录 参数说明: --host:MongoDB所在服务器IP. -- ...

随机推荐

  1. js自动时间

    function showTime() { //时间 nowtime = new Date(); year = nowtime.getFullYear(); month = nowtime.getMo ...

  2. 解决React Native:Error: Cannot find module 'asap/raw'

    本来想做个底部切换的tab的,安装完 npm i react-native-tab-navigator --save 后跑项目就报错了,如下图 和我一样报这个错的朋友们莫慌,一步就可以解决了,执行命令 ...

  3. python 练习题(1-15)

    1.给定一个整数数组和一个目标值,找出数组中和为目标值的两个数. 2.生成双色球 3.逻辑运算(运算符优先级) 4.输入一个整数,判断这个数是几位数 5.用while循环计算 1-2+3-4...-9 ...

  4. hive on spark

    hive on spark 的配置及设置CDH都已配置好,直接使用就行,但是我在用的时候报错,如下: 具体操作如下时报的错:      在hive 里执行以下命令:     set hive.exec ...

  5. Linux 内核态 用户态

    内核态和用户态最主要区别在于权限不同,比如特权级别0-3,0级就意味着进入内核态,分级别之后,应该程序大部分情况下运行在用户态,保证了程序运行的安全性 什么情况下会发生从用户态向内核态切换.这里细分为 ...

  6. 在Tomcat文件中,点击start.bat启动的是另一个tomcat

    遇到问题:在下载了一个免安装的Tomcat7之后解压,点击startup.bat启动tomcat,却报了异常. 后来在电脑一个文件夹中发现了另一个Tomcat8,是安装版本,并配置了环境变量.其环境变 ...

  7. 如何自动生成图片用于测试 pytorch(No image? No need image)

    if __name__ == '__main__': module = CAM_Module() in_data = torch.randint(0, 255, (2, 3, 7, 7), dtype ...

  8. 转载:IIS 之 连接数、并发连接数、最大并发工作线程数、队列长度、最大工作进程数

    一.IIS连接数 一般购买过虚拟主机的朋友都熟悉购买时,会限制IIS连接数,顾名思义即为IIS服务器可以同时容纳客户请求的最高连接数,准确的说应该叫“IIS限制连接数”. 客户请求的连接内容包括: [ ...

  9. 登录注册页面(连接MySQL8.0.15版本)

    原文链接:https://mp.weixin.qq.com/s?__biz=MzI4Njg5MDA5NA==&mid=2247483779&idx=1&sn=e23e68e96 ...

  10. 企业BGP网络规划案例(四)

    关于路由的发布和接收使用route-map过滤,防止本AS作为一个转发区域. 在XRV3上和XRV4上使用prefix-list 进行路由接搜和发布的过滤 XRV3配置 =============== ...