MySQL DBA
分类: NOSQL
2013-03-07 14:01:54
mongo 数据库备份恢复
1. 文件备份(冷备)
直接备份mongodb的数据目录。需要停止mongo server 拷贝数据目录进行完整有效的备份。
2. 工具备份(热备)
mogodump,备份工具。mongorestore 恢复工具。
mongodump 参数:-h –u –p server 信息
--dbpath 制定后直接拷贝指定数据目录。需停止mongo server
--direcoryperdb --dbpath 指定后备份分库存放
-o 备份数据目录
mongorestore 参数:-h –u –p server信息
-d 指定db
-c 指定collection
--objcheck 恢复前进行验证
--filter arg 恢复前进行过滤
--drop drop each collection before import
--oplogReplay 对指定时间点的恢复进行oplog回放
--keepIndexVersion 恢复数据但不更新索引
3. fsync and lock
强制刷新所有更改到磁盘,并维护一个全局锁。再进行拷贝数据目录进行备份。刷新时间中影响系统性能,锁的过程中阻塞读。
> use admin
switched to db admin
> db.runCommand({"fsync":1,"lock":1});
{
"info" : "now locked against writes, use db.fsyncUnlock() to unlock",
"seeAlso" : "",
"ok" : 1
}
> inf="make snapshoot of data dir."
make snapshoot of data dir.
> db.$cmd.sys.unlock.findOne()
{ "ok" : 1, "info" : "unlock completed" }
> db.currentOP()
{ "inprog" : [ ] }
4.复制,通过slave来备份数据,也是比较常用而且有效的备份。
--repair mongod 启动选项,mongod异常退出后,可使用repair 参数启动。修复的过程:验证所有的数据,忽略损坏的数据,重建所有的索引。同时对数据空间做了整理。
在线修复:
> use db
switched to db db
> db.repairDatabase()
{ "ok" : 1 }
>