设为首页 加入收藏

TOP

mongodb进阶三之mongodb管理(三)
2015-11-21 01:52:06 来源: 作者: 【 】 浏览:1
Tags:mongodb 进阶 管理
journaling
-d [ --db ] arg 准备备份的数据库
-c [ --collection ] arg 准备备份的集合。
-o [ --out ] arg 导出数据将要保存在的目录,如参数为“-”,则直接在控制台显示。
-q [ --query ] arg json query
–oplog Use oplog for point-in-time snapshotting
–repair 尝试修复损坏的数据库
–forceTableScan 强制表扫描。

5.2:mongorestore的基本操作
与mongodump相对应通过mongorestore进行恢复使用以下选项:
–help 查看帮助信息。
-v [ --verbose ] 显示更多调试信息。
–version 显示该命令版本。
-h [ --host ] arg mongodb数据库所在主机IP地址。
–port arg mongodb启动时所使用的端口。也可以使用 –host hostname:port格式直接指定主机和端口。
–ipv6 是否支持ipv6 。
-u [ --username ] arg 指定登陆用户名。
-p [ --password ] arg 指定登陆密码。
–dbpath arg 越过mongod服务器,直接访问给定路径的mongod数据库文件。使用该参数需要锁定给定的数据目录,所以无法使用当前mongod服务正在使用的目录。
–directoryperdb 如果指定了dbpath目录,那么每个db都会在一个单独的文件夹中。
–journal enable journaling
-d [ --db ] arg 准备恢复的数据库。
-c [ --collection ] arg 准备恢复的集合。
-objcheck 恢复前验证一下数据对象。
-filter arg 有选择的进行恢复。
–oplogReplay replay oplog for point-in-time restore。
–drop 修复前删除所有集合。
–keepIndexVersion 强制表扫描。
这里我们需要了解两个命令,首先是验证写入是否成功的命令:

db.runCommand({"getLastError":1,"j":true})
这个命令主要用来解决一些重要数据需要了解是否已经写入磁盘中。

另外一个是设置数据库提交数据到日志的时间间隔命令:

db.adminCommand({"setParameter":1,"journalCommitInterval":30})
其中setParameter可以设置的间隔为2毫秒到500毫秒,时间间隔月底系统开销越大。

5.3:数据库未运行时的备份
数据库未运行时对数据库进行备份,通过使用mongodump十分方便。例如使用以下命令:

mongodump --dbpath /var/lib/mongodb/ --out /usr/backup

5.4:数据库未运行时的恢复
数据库未运行时的恢复也很简单,通过使用mongorestore进行恢复。不仅可以进行整体恢复,还可以进行某一个数据库的恢复,例如使用以下命令恢复test数据库到运行系统中。

mongorestore --dbpath /usr/backup/ --journal /var/lib/mongodb/test

5.5:如何通过远程链接进行备份
网络允许的情况下,mongodump工具可以进行远程链接数据库,进行备份。例如以下备份就是通过指定主机地址、端口、用户名、密码和备份目录而进行的备份操作。

mongodump --host www.***.com --port 3017 --username user --password pass --out /usr/backup/mongodump-2013-10-24

5.6:如何通过远程链接进行恢复
对应的通过mongodump工具进行远程链接备份的数据库,也可以通过mongorestore来进行恢复。例如以下恢复就是通过指定主机地址、端口、用户名、密码和备份目录而进行的恢复操作。

mongorestore --host www.***.com --port 3017 --username user --password pass /usr/backup/mongodump-2013-10-24

5.7:如何使用oplog进行备份
通过设置操作日志oplog的实时备份点,可以完成快照式的数据库备份。这样做的好处就是如果我们在使用mongodump进行备份的操作时,如有操作正进行数据库删除之类的操作时,我们的mongodump备份已经将这个数据库备份完,那么我们获得的备份就会和实际的数据库不同,而且这个数据库在事实上未成存在过。

mongodump不是快照备份,备份过程中系统可能会继续进行操作。oplog的设置就是避免这种情况发生的,不过使用oplog的前提是mongod启动时使用了--replSet选项。本质是使用了复制的功能,以后讲到复制大家就更清楚了。

5.8:如何使用oplog恢复
与mongodump使用oplog进行备份对应,mongorestore也可以使用oplog对数据库进行恢复。

六:意外关机修复

6.1:一般的处理程序
MongoDB意外关机后,通常有两种选择进行恢复:

1.直接在源文件上进行恢复。
2.保留关机前的原始文件,检查以后再进行恢复。
按照第二种情况的恢复流程是:

1.修复数据库
2.确认数据库情况
3.删除锁文件
4.修复数据库
5.正常启动运行
如果按照第一种方式那么就忽略以上1、2两个步骤。

6.2:修复并保留原始数据库
通过下面的命令,我们来对数据库进行修复,并将原始数据库备份到修复目录/usr/backup下。 这样做的目的是不破坏原始的数据库文件。

mongod --dbpath /var/lib/mongodb --repair --repairpath /usr/backup

6.3:如何确认数据库情况
通过运行下面的命令我们可以将进行修复以后的数据库运行起来。然后通过检查数据库的状态,意外发生前进行的操作执行情况,例如插入数据是否完成,目前表内数据情况等,来判断数据库是否已经完全修复了。

mongod --dbpath /usr/backup

6.4:删除锁文件
根据修复数据库运行的情况,判断如果数据库基本是正常的,我们就可以删除锁文件了。如果数据库不正常,那么就需要做相应的处理。如使用了日志,根据日志进行恢复,如使用了复制那么进行恢复等等情况,具体问题需要具体分析。

rm /var/lib/mongodb/mongod.lock

6.5:修复数据库
修复数据库使用以下的命令,这时修复数据库会使用新文件代替原有的旧文件。

mongod --dbpath /usr/backup --repair

6.6:正常启动数据库
通过以上的几个步骤以后,我们就可以正常启动数据库了。

mongod --dbpath /var/lib/mongodb

首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇视图的创建和使用 下一篇HBase1.0以上版本的API改变

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: