3

我在一个非常简单的设置中使用 MongoDB,需要一致的备份策略。我发现将 a 包裹mongodump在锁定/解锁中是一个坏主意。然后我读到该--oplog选项应该能够在没有锁定/解锁的情况下提供一致性。但是,当我尝试这样做时,它说我只能--oplog在“完整转储”上使用该选项。我浏览了文档和许多文章,但似乎仍不清楚如何从单个时间点转储 mongo 数据库。

现在我只是进行普通转储,但我假设如果在转储期间有写入,它会使备份不是从一个时间点开始的,对吗?

mongodump -h $MONGO_HOST:$MONGO_PORT -d $MONGO_DATABASE -o ./${EXPORT_FILE} -u backup -p password --authenticationDatabase admin

4

1 回答 1

3

在生产环境中,MongoDB 通常部署为副本集以确保冗余和高可用性。如果您正在运行独立的 mongod 实例,则有几个选项可用于时间点备份。

您提到的一个选项是使用 –oplog 选项执行 mongodump。但是,此选项仅在您运行副本集时可用。您可以轻松地将独立的 mongod 实例转换为单节点副本集,而无需添加任何新的副本集成员。有关详细信息,请查看以下文档。

http://docs.mongodb.org/manual/tutorial/convert-standalone-to-replica-set/

这样,如果在 mongodump 运行时有写入,它们将成为您备份的一部分。请参阅以下链接中的使用 Oplogs 的时间点操作部分。

http://docs.mongodb.org/manual/tutorial/backup-databases-with-binary-database-dumps/#point-in-time-operation-using-oplogs

请注意,使用 mongodump 和 mongorestore 备份和恢复 MongodDB 可能会很慢。

文件系统快照是另一种选择。以下链接中的信息详细介绍了用于执行 MongoDB 热备份的两个快照选项。

http://docs.mongodb.org/manual/tutorial/backup-databases-with-filesystem-snapshots/

您还可以查看 MongoDB 备份服务。

http://www.10gen.com/products/mongodb-backup-service

此外,带有 oplog 选项的 mongodump 目前不适用于单个 db/collection。有计划实施该功能。您可以关注票证并在“更多操作”按钮下为该功能投票。

https://jira.mongodb.org/browse/SERVER-4273

于 2013-07-06T00:19:16.663 回答