并提前感谢您的时间。
对于给定的分片设置,mongos 在指定要与之交谈的配置服务器时启动。假设我们从以下 mongos 选项开始:
--configdb=cf1,cf2,cf3
一切都很好,花花公子。如果您要重新启动 mongos(或启动不同的 mongos):
-- configdb=cf3,cf2,cf1
它会导致以下错误:
Tue Jul 9 23:32:41 uncaught exception: error: { "$err" : "could not initialize sharding on connection rs1/db1.me.net:27017,db2.me.net:27017,db3.me.net:27017, :: caused by :: mongos specified a different config database string : stored :cfg1:27017,cfg2:27017,cfg3:27017 vs given :cfg3:27017,cfg2:27017,cfg1:27017","code" : 15907}
我的问题是,mongo 对配置服务器字符串的顺序敏感的原因是什么?我会想象在某些时候它会解析不同的服务器主机名/端口,那么为什么不只比较集合呢?我知道您可以从源代码中看到它只是一个字符串比较,但我的问题是其根本原因。
这个问题的一些背景:我正在为我的 mongo 部署使用 chef。我们最近进行了迁移具有相同主机名的配置服务器的练习。然而,这仍然是一个破坏性的过程,因为厨师拿起配置服务器的顺序已经改变,因此改变订单 mongos 开始它的过程。我知道这个问题直接是因为厨师的功能,但我很好奇为什么 Mongo 没有这么灵活。
感谢你的宝贵时间。