//
MongoDB3.6.3版本增加分片副本集的小bug
//
昨天的文章中分享了MongoDB给集群中新增分片的过程。之前的测试是在自己的环境上,用MongoDB4.0.4的版本做的测试,整个测试过程都没有问题。
今天下午在线上用MongoDB3.6.3版本如法炮制的时候,发现了一个内存的报错,报错内容大概如下:
[thread74] Invalid access at address: 0x18 [thread74] Got signal: 11 (Segmentation fault).
现象就是,在一个副本集群中,修改每个副本的配置文件,添加:
sharding:
clusterRole:shardsvr
之后,重启MongoDB实例,发现副本集中的实例会一个一个的退出整个集群,每个实例的报错信息都是上面的样子。
经过了一天的排查,结果让我大吃一惊,原来是MongoDB在3.6.3这个版本特有的一个bug,翻墙看到MongoDB的官方解释如下:
https://jira.mongodb.org/browse/SERVER-34746
https://jira.mongodb.org/browse/SERVER-32677
官方给的建议是不要使用这种方式修改副本集的属性,在初始化一个集群的时候,就要想要到底是需要初始化一个副本集,还是分片副本集,提前设置好对应的参数。
排查的过程中,一度想要放弃了,但是最后还是比较执拗的找到了结果,虽然结果也没有解决这个问题。整个过程中的感触是:
1、遇到问题,不要着急,冷静下来去分析,去查找答案
2、有问题最好去官方网站论坛去查,很有可能别人和你遇到了一样的问题
3、有些问题确实没有好的解决方案。真是应了那句:用最新的技术、最新的版本,可以解决很多问题。升级版本确实能够解决一部分版本带来的不知名问题。
好吧,又是一事无成的一天。
有帮助的话还希望点下再看哈