MongoDB分片集群升级后设置3.4特性兼容版本失败排查
解决MongoDB 3.4分片集群FCV设置后的查询与展示问题
嘿,我来帮你捋清楚这个问题——你其实是踩了MongoDB 3.4版本里一个很容易混淆的命令使用误区,下面一步步给你拆解:
1. 先纠正FCV的查询命令
你用getParameter来查featureCompatibilityVersion是错的!在MongoDB 3.4中,FCV(特性兼容版本)是通过专门的getFeatureCompatibilityVersion命令来查询的,正确的操作应该是:
use admin db.adminCommand({getFeatureCompatibilityVersion: 1})
正常情况下,执行后会返回这样的结果:
{ "featureCompatibilityVersion" : "3.4", "ok" : 1 }
2. 为什么set命令成功但查询报错?
你执行setFeatureCompatibilityVersion返回{"ok":1},说明mongos本身接收到命令并下发了,但分片集群的FCV生效是需要所有分片主节点、配置服务器主节点都完成版本切换的。不过你查询报错的核心原因还是命令用错了,getParameter根本不支持获取FCV参数,所以才会提示找不到选项。
3. 验证整个集群FCV是否完全生效
要确保整个分片集群都切换到3.4的FCV,不能只在mongos上操作,得逐个节点检查:
- 登录每个分片的主节点,执行上面的
getFeatureCompatibilityVersion命令,确认返回版本是"3.4" - 登录每个配置服务器的主节点,同样执行该命令,保证所有配置节点的FCV一致
- 仲裁节点不用检查FCV,但要确认它们的MongoDB版本已经升级到3.4
4. 解决Ops Manager展示异常的问题
Ops Manager没完整展示FCV信息,大概率是因为集群中还有节点没完成FCV切换,导致监控采集的数据不一致。你可以:
- 先按上面的步骤确认所有主节点的FCV都切换完成
- 等待几分钟,让Ops Manager完成下一次自动数据采集,再刷新页面查看
- 如果还是没恢复,可以重启Ops Manager的监控代理,强制触发一次全集群状态采集
内容的提问来源于stack exchange,提问作者thecollector
相关产品推荐
相关产品推荐

