1.Fsync的使用
mongoDB的简单结构:
2.上锁和解锁
上锁(切换到 admin 数据库下)
db.runCommand({fsync:1lock:1});
练习:
尝试给当前数据库上锁:
> db.runCommand({fsync:1,lock:1});
{ "errmsg" : "access denied; use admin db", "ok" : 0 }
提示上锁失败,原因是:没有在admin数据库下操作
我们切换到admin数据库下重试:
> use admin
switched to db admin
> db.runCommand({fsync:1,lock:1});
{
"info" : "now locked against writes, use db.fsyncUnlock() to unlock",
"seeAlso" : "http://www.mongodb.org/display/DOCS/fsync+Command",
"ok" : 1
}
上锁成功!
解锁
> db.currentOp()
{
"inprog" : [ ],
"fsyncLock" : 1,
"info" : "use db.fsyncUnlock() to terminate the fsync write/snapshot loc
k"
}
> db.fsyncUnlock()
{ "ok" : 1, "info" : "unlock completed" }
> db.currentOp()
{ "inprog" : [ ] }
有了 fsync 命令,就能非常灵活地备份,不用停掉服务器,也不用牺性备份的实时特性。 要付出的代价就是一些写入操作被暂时阻塞了。
唯一不耽误读写还能保证实时快照的备份方式就是通过从服务器备份 。
3.数据修复
当停电等不可逆转的灾难来临的时候,由于mongodb的存储结构,导致
会产生垃圾数据,在数据恢复以后这垃圾数据依然存在
这时数据库提供一个自我修复的能力.使用起来很简单:
db.repairDatabase()