MongoDB Fsync锁与数据恢复
本文来自
2cto /database/201206/137682
摘 要:本文介绍了 MongoDB 的 fsync 和锁方式备份与恢复的过程。
关键词:fsync,lock
1.fsync 和锁方式备份
冷备份和热备份都不能保证备份时获取数据的实时性,因为我们在备份的时候可能还有数据在内存
缓冲区中没有写入到磁盘,MongoDB 给我们提供了 fsync+lock 机制就能满足我们的需求。
fsync?注意,只支持 1.3+版本):该命令会强制服务器将所有缓冲区中的内容写入磁盘,让我们可
以实时性获取数据。
lock?写入锁):通过 lock 给数据库一个写入锁,阻止对数据库的进一步写入操作,其他实例的写
入操作全部被阻塞,直到释放锁为止。写入锁是让 fsync 在备份时发挥作用的关键。
?1)在 shell 中强制执行 fsync 并获得 lock?写入锁),在备份之前 fsync 并加锁:
fsync 并加锁:db.runCommand({"fsync":1,"lock":1}),该命令用于 admin db。具体操作和运行结果如图
1 所示。
图 1 fsync 并加锁操作与运行结果
该操作强制服务器将所有缓冲区中的内容写入磁盘并对数据库上锁,不允许执行写数据操作,一般
在执行数据库备份时有用。
?2)db.$cmd.sys.unlock.findOne():释放锁,备份好了就要解锁,该命令用于 admin db。具体操作和
运行结果如图 2 所示。
图 2 释放锁操作与运行结果
?3)db.currentOp():查看当前锁状态
已经解锁状态,具体的运行结果如图 3 所示。
图 3 已经解锁状态
上锁状态具体运行结果如图 4 所示。
1 / 2
MongoDB Fsync 锁与数据恢复
评论0
最新资源