MongoDB分片需要知道replicaset的成员。成员列表发现是否动态?我的意思是,如果我们将一个节点添加到已配置为配置服务器上的分片的现有复制集,该分片是否会自动更新,或者我们是否已经手动更新了添加到副本的任何新成员的分片配置?
答案 0 :(得分:2)
在旧版本的Mongo中,在2.0.3之前,添加分片时需要指定所有副本集成员。因此,似乎可以得出结论,当添加分片并且只需要知道副本集的一个成员时,副本集成员之间的所有活动都被委托给副本集。
可能最佳的确定方法是在您自己的计算机上启动测试方案。但没有任何迹象表明应该需要任何额外的分片配置。
作为一个更新,因为我在午餐时无事可做:)我只是按照列出的教程中的方式调整了一大堆实例:
http://docs.mongodb.org/manual/tutorial/add-shards-to-shard-cluster/
仅在副本集的第一个成员中使用sh.addShard的一些差异仅添加,而不是文档中显示的所有成员语法。
一旦碎片上升。我刚刚向firstset
添加了两个副本集节点。
http://docs.mongodb.org/manual/tutorial/expand-replica-set/
没有别的东西让我们看看mongos的状态
mongos> db.printShardingStatus()
--- Sharding Status ---
sharding version: {
"_id" : 1,
"version" : 4,
"minCompatibleVersion" : 4,
"currentVersion" : 5,
"clusterId" : ObjectId("52f2f77a538f784f4413e6b9")
}
shards:
{ "_id" : "firstset",
"host" :"firstset/localhost:10001,localhost:10002,localhost:10003,localhost:10004,localhost:10005" }
{ "_id" : "secondset", "host" : "secondset/localhost:20001,localhost:20002,localhost:20003" }
databases:
{ "_id" : "admin", "partitioned" : false, "primary" : "config" }
{ "_id" : "test", "partitioned" : true, "primary" : "firstset" }
test.test_collection
shard key: { "number" : 1 }
chunks:
secondset 23
firstset 191
因此,碎片仍在移动块,而新节点只是在我打字时初始化。
而这就是将所有节点添加到分片上的副本集。其中大部分是在100万份文件插入期间完成的。