如何安全地使用 fsyncLock() 备份单个 mongod

Luk*_*yen 1 backup database-backup mongodb

我在 MongoDB 的官方文档中读到:

重要:db.fsyncLock() 可能会阻止读取,包括验证身份验证所需的读取警告:调用 db.fsyncLock() 时,请确保连接保持打开状态以允许后续调用 db.fsyncUnlock()。关闭连接可能会使解锁变得困难。

在最坏的情况下,我使用 fsyncLock() 来阻止数据库,但由于临时网络故障,我突然失去了与数据库的连接。在这种情况下,我无法重新连接,因为 fsyncLock() 阻止了读取器。我的数据库将永远被阻塞。

我现在正在考虑关闭 mongodb 进行备份。单 mongod 最安全的备份解决方案是什么?

Wes*_*ley 5

单 mongod 最安全的备份解决方案是什么?

两种选择:

  1. mongodump对运行mongod。它不会阻塞,但在备份数据库时会导致一些读取锁定和一般噪音。这通常不是什么大问题,除非您对数据库有很多争用。
  2. 根据您的文件系统,拍摄文件系统的快照mongodump --dbpath并对这些文件执行。

真的,您应该有一个副本集并针对辅助节点进行备份。

  • @LukeNguyen 在没有锁的情况下转储没有风险,mongodump 就是为此而设计的。MongoDB Inc [在其文档中明确说明](http://docs.mongodb.org/manual/reference/program/mongodump/):`不要将 mongodump 与 db.fsyncLock() 一起使用。` 此外,您可以使用 ` --oplog` 选项与 mongodump 一起写入在 mongodump 运行时传入的操作。然后,在使用 mongorestore 进行恢复时,您将需要使用 `--oplog` 标志。但实际上,您应该为此制作一个副本集,以实现零停机、零副作用备份。 (2认同)