确保数据在 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
目前我有一个用于生产数据的副本集。 我正在向副本集添加新成员。新成员的状态变为 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