1. 备份和恢复工具参数
* 几个重要参数:
* mongodump
* --polog:复制mongodump开始到结束过程中的所有oplog并输出到结果中。输出文件位于dump/oplog.bson
* mongorestore
* --oplogReplay:恢复完数据文件后再重放oplog。默认重放dump/oplog.bson
=><dump-directory>/local/oplog.bson。如果oplog不在这,则可以:
* --oplogFile:指定需要重放的oplog文件位置
* --oplogLimit:重放oplog时截止到指定时间点
2. 实际操作:mongodump/mongorestore
为了模拟dump过程中的数据变化,我们开启一个循环插入数据的线程:
```
for(var i = 0; i < 10000; i++) {
db.random.insertOne({x:Math.random() * 100000});
}
```
在另一个窗口中我们对其进行mongodump:
```
mongodump -h 127.0.0.1:27017 --oplog
```
使用mongorestore恢复到一个新集群:
```
mongorestore --host 127.0.0.1 --oplogReplay dump
```
3. 更复杂的重放oplog
假设全量备份已恢复到数据库中(无论使用快照、mongodump或复制数据文件的方式),重要放一部分增量怎么办?
* 导出主节点上的oplog:
* mongodump --host 127.0.0.1 -d local -c oplog.rs
* 可以通过 --query参数添加时间范围
* 使用bsondump查看导出的oplog,找到需要截止的时间点
* 恢复到指定时间点
* 利用--oplogLimit指定恢复到这条记录之前
* mongorestore -h 127.0.0.1 --oplogLimit "1577355175:1" --oplogFile dump/local/oplog.rs<空文件夹>
4. 分片集备份
分片集备份大致与复制集原理相同,不过存在以下差异:
* 应分别为每个分片和config备份;
* 分片集备份不仅要考虑一个分片内的一致性问题,还要考虑分片间的一致性问题,因此每个片要能够恢复到一个时间点;
5. 分片集的增量备份
尽管理论上我们可以使用与复制集相同的方式来为分片集完成增量备份,但实际上分片集的情况更加复杂。这种复杂性来自两个方面:
* 各个数据节点的时间不一致:每个数据节点很难完全恢复到一个真正的一致时间点上,通常只能做到大致一致,而这种大致一致通常足够好,除了以下情况:
* 分片间的数据迁移:当一部分数据从一个片迁移到另一个片时,最终数据到底在哪里取决于config中的元数据。如果元数据与数据节点之间的时间差异
正好导致数据实际已经迁移到新分片上,而元数据仍然仍未数据在旧分片上,就会导致数据丢失情况发生。虽然这种情况发生的概率很小,但仍有可能导致问题。

要避免上述问题的发生,只有定期停止均衡器;只有在均衡器停止期间,增量恢复才能保证正确。

MongoDB备份与恢复操作的更多相关文章

  1. mongodb 数据库操作--备份 还原 导出 导入(转)

    mongodb 数据库操作--备份 还原 导出 导入   -------------------MongoDB数据导入与导出------------------- 1.导出工具:mongoexport ...

  2. MongoDB查询操作限制返回字段的方法

    这篇文章主要介绍了MongoDB查询操作限制返回字段的方法,需要的朋友可以参考下   映射(projection )声明用来限制所有查询匹配文档的返回字段.projection以文档的形式列举结果集中 ...

  3. EasyUI-datagrid数据展示+MongoDB数据操作

    使用EasyUI-datagrid进行数据展示:进行添加,修改,删除操作逻辑代码,数据源来自MongoDB. 一.新建SiteInfo控制器,添加Index页面:http://www.cnblogs. ...

  4. Mongodb Manual阅读笔记:CH2 Mongodb CRUD 操作

    2 Mongodb CRUD 操作 Mongodb Manual阅读笔记:CH2 Mongodb CRUD 操作Mongodb Manual阅读笔记:CH3 数据模型(Data Models)Mong ...

  5. [置顶] MongoDB 分布式操作——分片操作

    MongoDB 分布式操作——分片操作 描述: 像其它分布式数据库一样,MongoDB同样支持分布式操作,且MongoDB将分布式已经集成到数据库中,其分布式体系如下图所示: 所谓的片,其实就是一个单 ...

  6. MongoDB学习笔记(五) MongoDB文件存取操作

    由于MongoDB的文档结构为BJSON格式(BJSON全称:Binary JSON),而BJSON格式本身就支持保存二进制格式的数据,因此可以把文件的二进制格式的数据直接保存到MongoDB的文档结 ...

  7. mongodb常用操作语句

    mongodb常用操作语句 A:创建数据表 db.createCollection(name, {capped: <Boolean>, autoIndexId: <Boolean&g ...

  8. .Net Core MongoDB 简单操作。

    一:MongoDB 简单操作类.这里引用了MongoDB.Driver. using MongoDB.Bson; using MongoDB.Driver; using System; using S ...

  9. mongoDB 数据库操作

    mongoDB 数据库操作 数据库命名规则 . 使用 utf8 字符,默认所有字符为 utf8 . 不能含有空格 . / \ "\0" 字符 (c++ 中会将 "\0&q ...

随机推荐

  1. PhoneGap打包webApp

    因为我只弄了Andriod的环境,所以在此只以Andriod为例. 使用PhoneGap搭建Android开发的项目整体步骤如下: 安装java环境. 安装ant构建工具. 安装android的开发环 ...

  2. mysql与clickhouse的字段类型对应表

  3. clickhouse安装数据导入及查询测试

    官网 https://clickhouse.tech/ quick start ubantu wget https://repo.yandex.ru/clickhouse/deb/lts/main/c ...

  4. 8.Vue.js-计算属性

    计算属性关键词: computed. 计算属性在处理一些复杂逻辑时是很有用的. 可以看下以下反转字符串的例子: <!DOCTYPE html><html><head> ...

  5. bugku 杂项 流量分析(cnss)

    bugku 杂项 流量分析(cnss) 此题较为简单 wireshark 追踪第一行tcp流信息 得到如下 GET /stat.htm?id=2724999&r=http%3A%2F%2Fsp ...

  6. Windows 10 彻底关闭 Antimalware Service Executable 降低内存占用

    概述 最近给内网的一台电脑安装 Windows 10 专业版系统,由于此电脑不会涉及到不安全因素,所以杀毒软件非必须. 以最大限度节省系统资源考虑,默认安装的 Micoroft Defender 占用 ...

  7. UVA294 约数 Divisors 题解

    Content 给定 \(n\) 个区间 \([l,r]\),求出每个区间内约数个数最大的数. 数据范围:\(1\leqslant l<r\leqslant 10^{10}\),\(r-l\le ...

  8. CF1497A Meximization 题解

    Content 给定 \(n\) 个数 \(a_1,a_2,\dots,a_n\),你需要将这些数重新排列,使得 \(\sum\limits_{i=1}^n\operatorname{mex}(a_1 ...

  9. curl -w参数简析

    curl的-w参数用于在一次完整且成功的操作后输出指定格式的内容到标准输出. 输出格式由普通字符串和任意数量的变量组成,输出变量需要按照%{variable_name}的格式,如果需要输出%,doub ...

  10. 大小端(内存、寄存器、CPU)

    CPU能进行32位操作,关键是寄存器有32位,数据总线也有32位. 为了表示方便,我们可以把32位寄存器从左到右,与内存中一个双字的四个字节地址从低到高对应. 如果CPU把寄存器的左端定义为高位,则带 ...