我可以删除 Mongo 备份 fsyncLock() + LVM 快照的 oplog local.* 吗?

我可以删除 Mongo 备份 fsyncLock() + LVM 快照的 oplog local.* 吗?

local.从 MongoDB 快照中删除 oplog * 文件是否安全?提交 oplog 条目是否fsyncLock()在数据库文件中?

我目前fsyncLock()对 Mongo 数据进行了 + LVM 快照。然后我挂载快照,并local.在将文件存档到 S3 或 FTP(使用 Duplicity)之前删除 oplog * 文件。我这样做是为了减少传输到 S3 的档案的大小。

当我在空副本集上的节点上进行恢复时,将重新创建 oplog 文件,并且其他节点将从这个新的主节点完全重新同步。但我不确定恢复中是否会丢失数据,因为它位于之前删除的 oplog 中而不是写入 DB 文件中。

答案1

在运行 mongo 复制备份时使用快照功能并不是一个好主意。首先,您需要获取副本集中“主副本”的快照。但问题是您的客户端可能会使用错误的写入关注策略进行连接。例如不要求它或大多数情况下不要求它,这会在主副本的 oplog 中留下未提交的数据。即使您将 oplog 或所有文件保留在本地数据库中,您在恢复时也可能会遇到问题(曾经遇到过这种情况,我的主副本无缘无故地寻求回滚)。

我的建议(我假设你不能停止 mongod)是使用 mongodump,是的,当你可以拥有快照时这听起来很愚蠢。但使用备份的真正意义在于能够恢复它们。

如果你不能使用 mongodump 或者不想使用。尝试彩信云备份功能。可以轻松恢复整个副本集。

编辑: 另一个选项是运行延迟副本成员。这里文档. 它涵盖了大多数备份需求。只需确定延迟时间。这样,您就不会通过运行备份/存档工具来消耗服务器的 io。

相关内容