gpt4 book ai didi

mongodb - 恢复数据库备份如何影响操作日志?

转载 作者:可可西里 更新时间:2023-11-01 10:44:12 25 4
gpt4 key购买 nike

我有一个独立的 MongoDb 实例。它里面有很多数据库。我虽然只关心备份/恢复其中一个数据库,但我们称它为 DbOne。

使用 ( http://www.mongodb.com/blog/post/dont-let-your-standalone-mongodb-server-stand-alone ) 中的说明,我可以在此独立服务器上创建一个 oplog。

使用工具 Tayra ,我可以记录/存储操作日志条目。能够创建增量备份是我在独立实例上启用 oplog 的主要原因。

我打算每天使用命令进行一次完整备份

mongodump --db DbOne --oplog

据我了解,此备份将包含我的数据库的时间点快照。

假设我想放弃自这次备份以来的所有更新,我删除所有备份的 oplog 并且我只恢复这个完整的备份,使用命令

mongorestore --drop --db DbOne --oplogReplay

此时,我是否需要对 local db 中的 oplog 集合做些什么? mongodb 会自动从操作日志中删除与此数据库相关的条目吗?因为如果没有,那么 Tayra 最终不会找到那些 oplog 条目并重新备份它们吗?

老实说,我还没有在我的机器上试过这个。我希望有人可以指向一个文档,其中列出了在这种情况下支持/预期的行为。

最佳答案

在提出问题后不久,我曾尝试使用 MongoDb 服务器设置为只有 1 个成员的副本集。但是我忘了回答这个问题。

我使用 mongodump --db DbOne --oplog 进行了备份。我执行了一些额外的更新。保持 mongodb 服务器不变,即仍在复制下运行,如果我运行 mongorestore 命令,那么它将创建数千个 oplog 条目,一个用于数据库中每个集合的每个文档。真是一团糟。

另一种方法是关闭 MongoDb 并将其作为独立实例启动(即不作为副本集运行)。现在,如果我要使用 mongorestore 进行恢复,则不会触及操作日志。这很糟糕,因为 oplog 现在包含实际集合中不存在的条目。

我想要一种机制,可以将我的数据库和本地数据库中的 oplog 信息恢复到备份发生的时间。 mongodump 不备份本地数据库。

最终我停止使用 mongodump,而是切换到备份整个数据目录(在停止 mongodb 之后)。一旦我们切换到 AWS,我就可以使用 EBS 快照功能来执行相同的操作。

关于mongodb - 恢复数据库备份如何影响操作日志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18729062/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com