mongodb的备份
转载请附原文链接:http://www.cnblogs.com/wingsless/p/5672057.html
mongodb现在为止还是没有像XtraBackup这样好用的备份工具,因此一般来说会有两种备份办法:拷贝文件和mongodump。拷贝文件这招在MySQL里经常用,但是必须要停掉写入服务,这种办法一般只会用于要进行机器迁移之类的情景,或者停机维护声明发表以后。那么mongodump算是一种比较推荐的办法。
《mongodb权威指南》这本书上指出,mongodump这种办法比较慢,它会把数据dump成BSON文件存储起来。备份一般分为全备和增备两种办法,下面分别说明。
全量备份
全量备份只需要指定--out(-o)参数,即指定备份存储路径即可。基本上这个没什么可说的,《mongodb权威指南》指出,这个工具不是一个快照备份,如果备份过程中仍然有服务对数据进行了更新操作,比如delete,那么可能备份出来的数据中会有根本不应该存在的数据,恢复的时候也会出现莫名其妙的一条数据。其实这个,并不是一个问题。请看下面的增量备份。
增量备份
mongodb自己并没有提供增量备份工具,但是没有问题,mongodb自己有个oplog的东西,这个东西很像MySQL的binlog,记录了所有的操作,而且这个oplog有个特点,叫做幂等性,简单地说就是这个oplog回放多少次效果都是一样的,不会出现数据重复等问题。
{
"ts": Timestamp(1468323972, 37),
"t": NumberLong(1),
"h": NumberLong("-9013437047635619317"),
"v": 2,
"op": "i",
"ns": "test1.testone",
"o": {
"_id": ObjectId("5784d8849fea750f2cce73c7"),
"name": 35
}
}
上面就是oplog的内容,其中"o"中的内容就是document本身了。可以看到我是在test1数据库的testone集合中插入了该document。
根据oplog的特点,就可以利用这个东西来做增量备份了。
首先在全量备份之前,我们需要得到现在的oplog的ts。Timestamp里分别是unix时间戳和序列号。记录下这个ts之后,就可以进行全量备份了。下面还是利用mongodump,只不过这次需要加上两个参数"-d local"和"-c oplog.rs",分别是数据库和collection。另外还有一个很重要的参数,就是"--query",加上一个查询条件即可,下面是一个例子:
mongodump -d local -c oplog.rs --query "{"ts":{$gte:Timestamp(1468323972, 18)}}" -o F:\data\test
1468323972, 18就是我们上面全备之前记录的时间戳和位置。这个命令会将该时间戳之后的所有数据导出来:

增备应该是每天进行的,因此每天都需要将该命令执行一遍,基于第一次的全备即可。
闲话
最近玩了一个工具,叫做mongo-oplog-backup的,是一个用ruby写的工具,在github上开源了,支持全备和增备,也是基于mongodump的,只是在恢复的时候,这个工具还能完成增量备份的bson文件和全量备份的bson的合并。但是ruby是我不会的语言,因此最近也在借鉴人家的思想用python写一个自己的工具,希望能成功吧。
这里附上这个工具的地址,还挺好用的:https://github.com/journeyapps/mongo-oplog-backup
转载请附原文链接:http://www.cnblogs.com/wingsless/p/5672057.html
mongodb的备份的更多相关文章
- Mongodb数据备份恢复
Mongodb数据备份恢复 一.MongoDB数据库导入导出操作 1.导出数据库 twangback为备份的文件夹 命令: mongodump -h 127.0.0.1[服务器IP] -d advie ...
- mongodb 定时备份
通过centos 脚步来执行备份操作,使用crontab实现定时功能,并删除指定天数前的备份 具体操作: 1.创建Mongodb数据库备份目录 mkdir -p /home/backup/mongod ...
- mongodb数据库备份迁移 windows -> linux
mongodb数据库备份迁移 windows -> linux cd 到本机mongodb的安装目录 如: C:\Program Files\MongoDB\Server\3.4\bin 可以发 ...
- MongoDB数据库备份与还原、单表的导入导出
-------------------MongoDB备份与恢复------------------- 1.MongoDB数据库备份 1.语法: mongodump -h dbh ...
- docker安装mongodb并备份
安装 官方镜像地址: https://hub.docker.com/_/mongo?tab=description 可以查看对应的dockerfile, 通过观察docker-entrypoint.s ...
- MongoDb进阶实践之九 Mongodb的备份与还原
一.引言 前几天写了MongoDB数据库的聚合.一说到“聚合”,用过关系型数据库的人都应该知道它是一个什么东西,主要是用于对数据分类汇总和统计.大家都知道,做为DBA还有另一个重要的任务,那就是对数据 ...
- MongoDB操作-备份和恢复,导入和导出
mongodb数据备份和恢复主要分为二种:一种是针对库的mongodump和mongorestore,一种是针对库中表的mongoexport和mongoimport 1. 常用命令格式 mongod ...
- mongodb数据库备份恢复-windows系统
备份语法: mongodump命令脚本语法如下: >mongodump -h dbhost -d dbname -o dbdirectory -h: MongDB所在服务器地址,例如:127.0 ...
- PCB MongoDB数据库 备份与还原
一. MongoDB数据库 备份与还原工具介绍: 数据备份工具 mongodump.exe 数据还原工具 mongorestore.exe 二. MongoDB数据库备份 mongodump - ...
- Mongodb自动备份数据库并删除指定天数前的备份
1.创建Mongodb数据库备份目录 mkdir -p /home/backup/mongod_bak/mongod_bak_now mkdir -p /home/backup/mongod_bak/ ...
随机推荐
- ThinkCMF-首页Nav部分菜单配置详解
Nav菜单代码放在了 /themes/simplebootx/Public/nav.html 具体代码: <?php $effected_id="main-menu"; $f ...
- No.013:Roman to Integer
问题: Given a roman numeral, convert it to an integer.Input is guaranteed to be within the range from ...
- jQuery cxDialog 对话框
cxDialog 是基于 jQuery 的对话框插件,支持自定义外观样式,同时兼容 Zepto,方便在移动端使用. 版本: jQuery v1.7+ | Zepto v1.0+ jQuery cxDi ...
- 15个优秀的 Material Design(材料设计)案例
Material Design (材料设计)是由谷歌创建和设计的一种设计语言,结合成功的设计的经典原则以及创新科技.谷歌的目标是开发一个设计系统,让所有的产品在任何平台上拥有统一的用户体验.全新的设计 ...
- atom编辑markdown之上传图片
01atom编辑markdown之上传图片 :first-child { margin-top: 0px; } .markdown-preview:not([data-use-github-style ...
- VS2012 asp.net mvc 4 运行项目提示:"错误消息 401.2。: 未经授权: 服务器配置导致登录失败"
创建mvc4 应用程序发布,运行出错.出现未经授权: 服务器配置导致登录失败.请验证您是否有权基于您提供的凭,后来找得解决方法: 打开点站的web.confg文件,将: <authorizati ...
- 每次点击按钮后,判断页面是否已经有该行,没有弹出repeater的一行,并给他赋一个这行附值,没有则跳出
protected void btnAdd_click(object sender, EventArgs e) { try { //记录第几次追加 pressCount++; typeString.A ...
- pip安装教程
首先你得安装了Python,这个网上教程大把. 关于pip的安装教程网上也很多,但是安装过程中遇到了很多问题. 我把安装pip需要的资源都放到云盘上了,直接下载就行,省得去找.(点我下载) 里面有两个 ...
- SAP 使用较频繁的日期时间处理函数总结
在ABAP实际开发中,经常需要用到一些日期时间处理函数,个人感觉经常使用到的函数进行一下汇总 1. 根据工厂日历 计划交货日期 和 收货处理时间 来计算 销售计划中计划完工日期,其他类似日期计算等 ...
- AE,按照属性值关系选择要素
if(axMapControl2.LayerCount<=0) { MessageBox.Show("请加载图层后使用该功能","系统提示",Messag ...