【问题标题】:fsync MongoDB behaviorfsync MongoDB 行为
【发布时间】:2022-01-08 19:53:47
【问题描述】:

根据文档,fsync with lock=true 应该会阻止写入。但值得注意的是,尽管它阻止了写入,但它仍在写入。这是预期的行为吗?

我在我的机器上本地安装了 MongoDB,并将其作为单节点副本集运行。正在使用的 MongoDB 版本是 4.2.11

我执行 fsync,如下所示。

然后尝试写入,它被阻止。我会取消它。

然后执行fsync解锁。

预计写入不会起作用,但它会以任何方式持续存在。 fsync 有问题吗?

【问题讨论】:

    标签: mongodb fsync


    【解决方案1】:

    当您关闭被阻止的插入(例如通过 control+ C 或任何其他机制)但不知何故进程没有停止并且在您运行 unblock fsync 后命令仍然在后台执行并且是插入或当插入命令被阻止时,然后您运行 unblock fsync ,这使块插入自动解除阻止。我在 v 4.4.10(比您的版本更高)上对此进行了测试,根据文档,它工作得非常好。

    先插入一条记录

    然后使用 fsync

    然后尝试再插入一条记录,该记录将被阻止并随后使用 Ctrl + C 杀死

    然后解锁 fsync

    验证第二次插入是否成功(这是预期的行为)

    您还可以检查前后的 db.serverStatus() 以查看服务器接受的“插入”命令的差异。这可以为您提供有关命令是否以某种方式到达的提示。信息看起来像这样

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-19
      • 1970-01-01
      • 1970-01-01
      • 2012-09-21
      • 2011-01-21
      • 2020-02-05
      • 2016-09-14
      相关资源
      最近更新 更多