mongodump针对每秒写入多次的正在运行的服务器运行是否安全?是否有可能以这种方式损坏转储?
从这里:
用于
--oplog在 mongodump 操作期间捕获传入的写入操作,以确保备份反映一致的数据状态。
这是否意味着无论数据库转储中有多少写入都会保持一致?
如果我mongodump --oplog在凌晨1 点运行并在凌晨 2 点完成,那么我运行mongorestore --oplogReplay会得到什么状态?
从这里:
但是,对于分片集群和副本集,使用
mongodump和mongorestore作为备份策略可能会出现问题。
但为什么?我有 1 个主要和 2 个次要的副本集。运行mongodump中的次要问题是什么?它应该与主相同(复制滞后差异除外)。
该文档是它很清楚:
--oplog创建一个文件,命名
oplog.bson为 mongodump 输出的一部分。该oplog.bson文件位于输出目录的顶层,包含在 mongodump 操作期间发生的 oplog 条目。该文件提供了 mongod 实例状态的有效时间点快照。要恢复到特定时间点备份,请结合使用此选项创建的输出mongorestore --oplogReplay。没有
--oplog,如果在转储操作期间有写操作,转储将不会及时反映单个时刻。在更新过程中对数据库所做的更改可能会影响备份的输出。
--oplog对 mongos 实例运行 mongodump 以转储分片集群的全部内容时无效。但是,您可以使用--oplog转储单个分片。
如果没有--oplog你仍然得到一个有效的转储,只是有点不一致 - 一些在凌晨 1 点到凌晨 2 点之间完成的写入将丢失。
有了--oplog凌晨 2 点捕获的 oplog 文件。转储仍然不一致,并且在恢复时重放 oplog 可以解决此问题。
转储分片集群的问题值得在文档中有专门的页面。主要是因为同步所有节点备份的复杂性:
要创建分片集群的备份,您将停止集群平衡器,备份配置数据库,然后使用 mongodump 对集群中的每个分片进行备份以捕获备份数据。要捕获更准确的系统即时快照,您需要在获取文件系统快照之前停止所有应用程序写入;否则快照只会在时间上近似。
转储副本集没有问题。
| 归档时间: |
|
| 查看次数: |
1354 次 |
| 最近记录: |