MongoDB 备份与恢复的实践

摘要:
2) 使用数据库。复制整个远程数据库的copyDatabase(…)命令:我在本地新安装了MongoDB。要备份远程MongoDB的所有数据,需要使用此命令。在mongo的命令行。exe,输入:˃db。copyDatabase{“ok”:1}˃数据库。copyDatabase{“ok”:1}˃showdbsCERConfig0.203125GBCERDataCache3.9521484375GBlocal0.078125GBtest第一个参数是远程数据库的数据库名,第二个参数是要复制到的本地数据库,第三个参数是本地数据库的主机名。3) 使用db-RepairDatabase()压缩数据库:MongoDB在长时间后变得非常大,需要清理。使用此命令使用Use命令切换到哪个数据库,然后执行db.repairDatabase()。

网站运行了不少日子了,一些数据需要备份。今天研究了下MongoDB的一些有关备份的方法:

1)使用mongodump和mongorestore工具:(参见http://cn.docs.mongodb.org/master/reference/program/mongodump/

使用起来很简单,在任何目录执行mongodump就行了(把mongodb安装路径下的bin加到环境变量path里面),它会自动连接到MongoDB数据库(通过默认host名和默认端口号),然后把dump出来的内容保存在名为dump的子目录下,每个database一个目录,一个collection生成2个文件(bson和json)文件:json文件是collection的定义,bson是二进制的数据,可以用mongodb的另外一个自带工具bsondump来查看(压缩率大概是85%+)。恢复的话,也简单,在同一目录下执行 mongorestore dump就行了,他会把数据全部导回去。具体的一些参数和细节,可以官方文档。


2)使用db.copyDatabase(...)命令来整个复制远程数据库:(参见http://docs.mongodb.org/manual/reference/method/db.copyDatabase/

我本地新装了MongoDB,想备份远程MongoDB的所有数据,就需要用到这个命令,在mongo.exe的命令行输入:

> db.copyDatabase("CERConfig", "CERConfig", "cerreport.xxx.com")
{ "ok" : 1 }
> db.copyDatabase("CERDataCache", "CERDataCache", "cerreport.xxx.com")
{ "ok" : 1 }
> show dbs
CERConfig       0.203125GB
CERDataCache    3.9521484375GB
local   0.078125GB
test    (empty)
第一个参数是远程数据库的Database名字,第二个参数是拷贝到本地的哪个数据库,第三个参数是远程数据库的host名。也很简单。


3)使用db.repairDatabase()来压缩数据库:(参见http://docs.mongodb.org/manual/reference/command/repairDatabase/#dbcmd.repairDatabase
用的时间长了MongoDB就变得很大,需要清理一下,用这个命令就可以,先用use命令切换到哪个数据库,然后执行db.repairDatabase()就行。注意,最好把数据库停掉再压缩。


4) 使用主从备份机制:(参见http://database.51cto.com/art/201107/278632_1.htm

启动master数据库:

binmongod --logpath "C:CERWebmongodblogmongod.log" --dbpath "C:CERWebmongodbdata" --master
启动slave数据库:

binmongod --dbpath "C:CERWeb2mongodbdata" --slave --source cerreport.xxx.com
好了,一旦从数据库启动,就会自动sync数据,可以在很明显的在控制台看到他辛勤的劳作~


其他参考:

http://database.51cto.com/art/201107/278632_1.htm

http://blog.csdn.net/wangpeng047/article/details/7705588

http://www.2cto.com/database/201307/224647.html

http://www.cr173.com/html/19181_1.html





免责声明:文章转载自《MongoDB 备份与恢复的实践》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇第四季-专题10-字符设备驱动模型Java实现 蓝桥杯 历届试题 最大子阵下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

MongoDB无法启动的解决方法

http://dmyz.org/archives/423 遇到MongoDB突然无法启动,第一反应是删除mongod.lock。这个文件在MongoDB的数据库目录下,默认是/data/db。这是最常见的问题了,产生原因是MongoDB没有正常结束(比如被kill -9杀掉或是其他意外情况导致中断)。 还一些其他情况会导致MongoDB无法启动。本文讨论的...

搭建你的Spring.Net+Nhibernate+Asp.Net Mvc 框架 (二)创建你的项目

本篇文章的目的:首先是创建解决方案。并创建相关的项目。先介绍一下项目的各自的作用: 从数据库层到表示层依次为: 数据库层:          1、接口IDao层:IDao          2、Dao层实现:HibernateDao和SqlDao               HibernateDao:由Hibernate实现的IDao部分         ...

Redis缓存篇(四)缓存异常

这一节,我们来学习一下缓存异常。缓存异常有四种类型,分别是缓存和数据库的数据不一致、缓存雪崩、缓存击穿和缓存穿透。 下面通过了解这四种缓存异常的原理和应对方法。 缓存和数据库的数据不一致 缓存和数据库的数据一致性包含两种情况: 缓存中有数据,缓存的数据值需要和数据库中的值相同; 缓存中没有数据,数据库中的值必须是最新值。 数据不一致是如何发生的? 在第...

PostgreSQL数据库中的常见错误

转载以作参考。 错误1FATAL: connection limit exceeded for non-superusers原因:非超级用户的连接数(max_connections - superuser_reserved_connections)超过了设定值解决办法:增加max_connections设定值,但如果增加了过多的话,数据库负担太大还容易产生...

集团公司(嵌入ETL工具)財务报表系统解决方式

集团公司(嵌入ETL工具)財务报表系统解决方式 一、项目背景: 某集团公司是一家拥有100多家子公司的大型集团公司,旗下子公司涉及各行各业,包含:金矿、铜矿、房产、化纤等。因为子公司在业务上的差异。子公司的財务报表也存在非常多不同之处。因此,各个子公司须要依据自己的情况,制作符合自己个性化需求的报表模版,然后再部署到集团server进行统一管理。 集团使...

[转]oracle11g数据库导入导出方法教程

原文地址:https://blog.csdn.net/xinxiaoyonng/article/details/79436673 oracle11g数据库导入导出:①:传统方式——exp(导出)和(imp)导入:②:数据泵方式——expdp导出和(impdp)导入;③:第三方工具——PL/sql Develpoer;一、什么是数据库导入导出?oracle1...