我在一个非常简单的设置中使用MongoDB,需要一致的备份策略。我发现将mongodump
包裹在锁定/解锁中的困难方法是个坏主意。然后我读到--oplog
选项应该能够在没有锁定/解锁的情况下提供一致性。但是,当我尝试这样做时,它说我只能在“完全转储”上使用--oplog
选项。我已经开始讨论文档和大量文章,但似乎还不清楚如何从单个时间点转储mongo数据库。
现在我只是进行正常的转储,但我假设如果在转储过程中有写入,那么备份不会来自单个时间点,对吗?
mongodump -h $MONGO_HOST:$MONGO_PORT -d $MONGO_DATABASE -o ./${EXPORT_FILE} -u backup -p password --authenticationDatabase admin
答案 0 :(得分:2)
在生产环境中,MongoDB通常作为副本集部署,以确保冗余和高可用性。如果您运行的是独立的mongod实例,则有一些选项可用于即时备份。
您提到的一个选项是使用-oplog选项执行mongodump。但是,此选项仅在运行副本集时可用。您可以轻松地将独立的mongod实例转换为单个节点副本集,而无需添加任何新的副本集成员。有关详细信息,请查看以下文档。
http://docs.mongodb.org/manual/tutorial/convert-standalone-to-replica-set/
这样,如果在mongodump运行时有写入,它们将成为备份的一部分。请参阅以下链接中的“使用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一起使用。有计划实施该功能。您可以关注故障单并在“更多操作”按钮下投票选择该功能。