【问题标题】:Is it necessary to perform an fsyncLock in MongoDB before creating a dump with mongodump?在使用 mongodump 创建转储之前是否需要在 MongoDB 中执行 fsyncLock?
【发布时间】:2016-10-05 08:57:02
【问题描述】:

2.6 docs 中明确指出,在运行mongodump 时不应使用db.fsyncLock()

不要将 mongodump 与 db.fsyncLock() 一起使用。

但自3.0 version of the docs 以来,此信息已消失。从 3.0 开始,mongodump 文档中实际上根本没有关于锁的信息。

我的猜测是,当使用--oplog 时,不需要调用db.fsyncLock(),但我不是 100% 确定:

不带--oplog,如果dump过程中有写操作 操作时,转储不会及时反映。变化 在更新过程中对数据库进行的操作会影响输出 备份。

你能帮我吗?在使用 mongodump 创建转储之前是否需要在 MongoDB 中执行 fsyncLock?

谢谢!

【问题讨论】:

    标签: mongodb mongodump


    【解决方案1】:

    我的猜测是,使用 --oplog 时不需要调用 db.fsyncLock()

    在 3.0 之前的 MongoDB 版本中,您不得在执行 mongodump 时调用 db.fsyncLock(),而您现在不需要它。关于不使用 fsyncmongodump was removed at several places at once 的警告,因此它看起来不像是疏忽,而是故意的改变。

    db.fsyncLock() 文档指出

    此函数锁定数据库并为备份操作创建一个窗口。

    但这仅对Backup with cp or rsync 是必需的。 Back Up and Restore with MongoDB Tools Tutorial 没有提到任何额外的锁,并明确提到使用 --oplog 参数,您将获得一致的备份:

    使用带有 mongodump 的 --oplog 选项来收集 oplog 条目以在副本集中构建数据库的时间点快照。使用 --oplog,mongodump 会复制源数据库中的所有数据以及从备份过程开始到结束的所有 oplog 条目。此操作与 mongorestore --oplogReplay 结合使用,可让您还原反映 mongodump 完成创建转储文件时对应的特定时刻的备份。

    结论:不,你不需要打电话给db.fsyncLock()

    【讨论】:

    • 感谢您的回答。 我不明白您为什么认为现在可能有必要:好吧,如果您查看fsyncLock 的文档,它会说This function locks the database and creates a window for backup operations.,将backup operations 链接到@ 987654325@,这让我很困惑。
    • @Ruben:啊,我明白了。但它只需要使用 cp 或 rsync 进行基本备份,而不需要 mongodump。我添加了那个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    相关资源
    最近更新 更多