【发布时间】:2019-12-06 15:59:51
【问题描述】:
我的 MongoDB Sharded Cluster 有 3 个分片,每个分片在 3 个副本上运行。总结一下:
Config Server:
shardcfg1.server.com:27018
shardcfg2.server.com:27018
shardcfg3.server.com:27018
Shard1:
shard11.server.com:27000 (P)
shard12.server.com:27000 (S)
shard13.server.com:27000 (S)
Shard2:
shard21.server.com:27000 (S)
shard22.server.com:27000 (STARTUP)
shard23.server.com:27000 (Unhealthy - invalidReplicaSetConfig: Our replica set configuration is invalid or does not include us)
Shard3:
shard31.server.com:27000 (S)
shard32.server.com:27000 (P)
shard33.server.com:27000 (S)
如果您看到上述状态,则问题出在SHARD2。
-
SHARD2中没有主节点 - 副本集配置如何将
shard23.server.com标记为非成员
辅助shard21.server.com 可用于获取转储,因此可能不会丢失数据。但是,我对如何再次稳定集群一无所知?
如何从集群中完全删除 SHARD2?或者我应该如何再次使用相同的服务器重新初始化分片?
【问题讨论】:
-
每个分片都是一个副本集。除非您确认块已迁移到另一个分片,否则不要尝试从集群中删除分片。假设您有有效的备份,您可以尝试在不从备份恢复的情况下设置和运行 shard2 副本。日志文件应该揭示为什么 shard22.server.com 是 STARTUP 并且没有促进领导选举。 3 台服务器中的 2 台是多数,预计领导选举。 shard23 可能需要从 shard2 副本集中移除并重新添加,从而导致初始同步,从而恢复为 PSS 模型。
-
如果跨副本集应用不一致的配置更改,可能会出现副本集初始化问题。例如,如果副本集是在没有内部身份验证的情况下创建的,那么一个成员应用了密钥文件身份验证,它将出现问题。验证副本集的配置一致性。尝试单独连接到每个成员以验证连接是否可行。
-
@barrypicker 我猜如果我们删除分片,排空过程就是在重新排列的范围内迁移块。如果我错了,请纠正我,因为如果我错了,我在集群中所做的事情太可怕了!
标签: mongodb mongodb-replica-set mongodb-cluster mongodb-replica