MongoDB fsyncUnlock 在 Windows 上偶尔无法解锁

MongoDB fsyncUnlock 在 Windows 上偶尔无法解锁

我们在 Windows 服务器上安装了 MongoDB 副本集,并安排了备份作业。MongoDB 配置为使用日志记录。

该作业db.fsyncLock()通过 MongoDB(主服务器)上的脚本运行,然后执行 Kaminario 文件系统快照,然后db.syncUnlock()通过脚本运行。

锁定/解锁是分开的,因此不使用相同的连接。

问题是它db.fsyncUnlock()并不总是有效,数据库会一直处于锁定状态,直到通过 shell 手动解锁。

我们尝试在不使用的情况下执行快照fsyncLock(),但我们的测试表明:

  1. 仅恢复单个数据库会导致数据出现“漏洞”(一些写入线程有未提交的更改,随后又有已提交的更改)

  2. 恢复整个数据库实例时,由于锁定和缺少日志,尽管日志已启用且存在,但恢复仍失败

然而,fsyncLock()测试通过了。测试是用writeConcern=执行的2,因为我们希望确保在 MongoDB 崩溃的情况下能够持久。


我的问题是:

fsyncUnlock()a.执行快照后如何保证成功?

b. 有没有办法可以在不使用的情况下保证一致的备份fsyncLock()


交叉提交在DBA.SE上


编辑:
经过进一步调查,问题似乎出在快照挂起上,而不是解锁上。但是,这仍然无法解释 fsync 需要锁定的原因。

相关内容