确保数据在 MongoDB 复制期间不丢失

Ensure data is not lost during MongoDB replication

目前我有一个用于生产数据的副本集。 我正在向副本集添加新成员。新成员的状态变为 SECONDARY(在 STARTUP、STARTUP2 等之后)。

这是否保证主成员中的所有数据都已复制到新成员?

有什么方法可以保证复制后不丢失数据吗?

(在 MongoDB 的 官方文档 中是否有任何规定 - 任何数据不丢失的保证或其他东西。我正在使用 MongoDB 3.2 )

  • 初始同步完成后(从源克隆数据并应用操作日志以维护数据集中的更改),您可以从主 mongodb shell 调用 rs.printSlaveReplicationInfo()

rs.printSlaveReplicationInfo()

这将 return 应用在辅助节点上的最后一个 oplog 条目,它是从主要节点 oplog.rs 集合中复制的。

响应被 return编辑为:

source: m1.example.net:27017
    syncedTo: Thu Apr 10 2014 10:27:47 GMT-0400 (EDT)
    0 secs (0 hrs) behind the primary
source: m2.example.net:27017
    syncedTo: Thu Apr 10 2014 10:27:47 GMT-0400 (EDT)
    0 secs (0 hrs) behind the primary

请注意,两个次要成员都落后于主要成员 0 秒,这表明没有复制滞后。

这本质上是不同的 b/w 上次操作记录在主服务器上,时间是应用在辅助服务器上。

  • 作为额外的预防措施,您可以在开始同步并从新同步的辅助节点收集相同统计信息 (db.stats()) 之前在主要节点右侧记下 db.stats()

了解初始同步 here