将MongoDB 3.6成员加入3.4副本集时同步失败报错咨询
解决MongoDB 3.4迁移至3.6时初始同步失败的问题
这个问题我之前帮不少人排查过,虽然你是从3.4升级到3.6,但根源还是featureCompatibilityVersion(FCV)文档缺失/未正确设置——哪怕集群实例版本已经是3.4.14,如果FCV没有正确配置,3.6的新节点会因为无法确认源集群的兼容性,触发你看到的同步失败错误。
下面是具体的排查和修复步骤:
1. 确认当前集群的FCV状态
首先连接到集群的主节点,执行以下命令检查FCV配置:
db.adminCommand({ getParameter: 1, featureCompatibilityVersion: 1 })
- 如果返回结果里没有
featureCompatibilityVersion字段,或者值是"3.2",那这就是问题的核心原因——说明你的集群可能是从3.2升级到3.4的,但从未设置过FCV为3.4,导致FCV文档缺失或未更新。
2. 修复FCV配置
如果FCV未设置为3.4,在主节点上执行以下命令,将FCV明确设置为当前集群的版本:
db.adminCommand({ setFeatureCompatibilityVersion: "3.4" })
执行完成后,需要等待集群内所有从节点同步完成这个配置变更。你可以在每个节点上重新运行第一步的getParameter命令,确认所有节点的FCV都显示为"3.4"。
3. 重新尝试添加3.6新成员
FCV配置完成后,再进行3.6节点的添加操作:
- 确保3.6节点的配置文件中,不要提前设置
featureCompatibilityVersion为3.6,保持默认或者设置为3.4(等节点成功加入集群后,再逐步升级FCV)。 - 回到主节点,执行添加成员的命令,比如:
(设置rs.add({ host: "your-3.6-node-ip:27017", priority: 0, votes: 0 })priority:0和votes:0是为了避免新节点在同步完成前影响集群选举,等同步完成后再调整参数) - 等待初始同步完成,通过
rs.status()命令查看新节点的状态,确认其变为SECONDARY且同步正常。
额外注意事项
- 备份优先:在进行任何变更前,一定要备份整个集群的所有数据,避免操作失误导致数据丢失。
- 版本一致性:确保所有3.4节点都是3.4.14版本,不要混合其他3.4小版本,避免潜在的兼容性问题。
- 逐步升级:当3.6节点成功加入并同步完成后,再逐步将其他3.4节点升级到3.6版本,最后再将整个集群的FCV设置为
3.6(执行db.adminCommand({ setFeatureCompatibilityVersion: "3.6" }))。
内容的提问来源于stack exchange,提问作者Arseni Mourzenko
相关产品推荐
相关产品推荐

