MongoDB备份与恢复操作

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中的元数据。如果元数据与数据节点之间的时间差异    正好导致数据实际已经迁移到新分片上,而元数据仍然仍未数据在旧分片上,就会导致数据丢失情况发生。虽然这种情况发生的概率很小,但仍有可能导致问题。

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

原文地址:https://www.cnblogs.com/w3liu/p/12639925.html

时间: 2024-11-08 11:23:19

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

mongodb备份与恢复(上)—ttlsa教程系列之mongodb(八)

数据定期备份是非常有必要的,数据的重要性不言而喻,地球上的猪都会知道.mongodb备份方式有三种,下面分别说到:1. 文件快照方式2. 复制数据文件方式3. 使用mongodump方式 一. 备份单台mongodb1. 文件快照方式这是最简单的备份方法.但是,需要系统文件支持快照和mongod必须启用journal.如果都符合这两条要求,可以在任何时刻创建快照. 恢复时,确保没有运行mongod,执行快照恢复操作命令,然后启动mongod进程,mongod将重放journal日志. 2. 复制

MongoDB常用操作

1.MongoDB常用操作 1.1数据库的操作命令 1.创建数据库,使用命令 use 数据库名称 ,如 use sxf. *注意: 1.use 命令后跟的数据库名,如果存在就进入此数据库,如果不存在就创建,所以这种创建方式又叫隐式创建 2.使用命令use sxf创建数据库后,并没有真正生成对应的数据文件,如果此时退出,此数据库将被删除,只有在此数据库中创建集合后,才会真正生成数据文件 2. 删除当前数据库,使用命令 db.dropDatabase() 3.查看所有数据库,使用命令 show db

java 对mongodb的操作

java 对mongodb的操作 1.1连单台mongodb Mongo mg = newMongo();//默认连本机127.0.0.1  端口为27017 Mongo mg = newMongo(ip);//可以指定ip 端口默认为27017 Mongo mg = newMongo(ip,port);//也可以指定ip及端口号 1.2连双台mongodb //ip为主机ip地址,port为端口号,dataBaseName相当于数据库名 DBAddress left = new DBAddre

Mongodb聚合操作之读书笔记

Mongodb聚合操作 读书笔记 mongodb,两种计算聚合pipeline和mapreduce pipeline查询速度快于mapreduce,但MapReduce能够在多台Server上并行执行复杂的聚合逻辑. mongodb不允许Pipeline的单个聚合操作占用过多的系统内存,如果一个聚合操作消耗20%以上的内存,那么mongodb直接停止操作,并向客户端输出错误消息. Pipeline方式使用db.collection.aggregate()函数进行聚合运算,运算速度较快,操作简单.

.NET下对MongoDB进行操作(二)

这次说下关于利用C#driver,对mongoDB进行简单的查询. 我们可以利用Query类中的静态方法来创建一系列query,达到查询的目的. Query在using MongoDB.Driver.Builders这一名称空间中. 1. 单一条件查询,可以参考如下代码: var query = Query.EQ("ColName", "Value"); foreach (BsonDocument doc in collection.Find(query)) { D

Android 使用VCard数据类型 异步进行联系人备份与恢复操作

生活中常有人因为更换手机而丢失联系人,所以联系人备份与恢复操作就显得有一些必要与价值. 所以学习了相关内容,并进行了适当整合,在这里整理出来. 本篇博客两个重点 使用VCard库进行联系人备份与恢复 异步进行备份与恢复操作 为什么要用VCard VCard是用于联系人数据存储的标准数据格式,且有一套已经成熟的库可以使用,通用于手机,也通用于邮件等,所以使用VCard进行联系人的数据存储与备份格式是非常好的选择.当然是用XML格式去存储也是可以的. 下载android-vcard.jar请猛戳这里

NoSql数据库初探-mongoDB读操作

MongoDB以文档的形式来存储数据,此结果类似于JSON键值对.文档类似于编程语言中将键和值关联起来的结构(比如:字典.Map.哈希表.关联数组).MongoDB文档是以BOSN文档的形式存在的.BSON是JSON附加了类型信息的一种二进制的表现形式. 文档中的字段可以是任何BSON类型,比如(文档类型.数组.文档数组) MongoDB将所有文档存储在collection中,collection是一组相关的文档集合,这一组文档集合拥有共同的索引,collection类似于关系型数据库中的表.

Spring集成MongoDB及操作

1.Spring集成MongoDB的集成配置 若使用Maven项目,则添加包依赖. <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-mongodb</artifactId> <version>1.2.0.RELEASE</version> </dependency> 在Spring配置文件中对Mon

MongoDB 常用操作

MongoDB常用操作