重要
以下过程适用于4.2配置服务器。对于MongoDB的早期版本,请参考《 MongoDB手册》的相应版本。
如果配置服务器副本集变为只读(即不具有主服务器),则分片群集无法支持更改群集元数据的操作,例如块拆分和迁移。尽管无法拆分或迁移任何块,但应用程序将能够将数据写入分片群集。
如果其中一台配置服务器不可用或无法运行,请尽快修复或更换它。以下过程将配置服务器副本集的成员替换为新成员。
本教程特定于MongoDB 4.2。对于MongoDB的早期版本,请参考《 MongoDB手册》的相应版本。
将mongo
外壳连接到配置服务器副本集的主服务器,并用于rs.add()
添加新成员。
小费
当新添加的辅助服务器的votes
且
其priority
设置大于零时,在其初始同步期间,即使该辅助服务器由于其数据不一致而无法提供读取服务或成为主服务器,但仍将作为投票成员。
这可能导致多数投票成员在线但无法选举主要成员的情况。为避免这种情况,请考虑首先使用和添加新的辅助服务器
。然后,一旦成员转换为
状态,即可使用来更新其优先级和投票。priority :0
votes :0
SECONDARY
rs.reconfig()
初始同步过程将所有数据从配置服务器副本集的一个成员复制到新成员,而无需重新启动。
mongos
实例自动识别配置服务器副本集成员中的更改,而无需重新启动。
确保新成员已达到SECONDARY
状态。要检查副本集成员的状态,请运行
rs.status()
:
重新配置副本集以更新新成员的投票和优先级:
n
数组中新成员的数组索引
在哪里members
。
警告
rs.reconfig()
壳方法可以强制当前主下台,这将导致一个选举。当主服务器降级时,将
mongod
关闭所有客户端连接。虽然这通常需要10到20秒,但请尝试在计划的维护期间进行这些更改。如果要更换主要部件,请先关闭主要部件,然后再关闭。
在替换配置服务器的初始同步完成后,从mongo
连接到主服务器的外壳开始,用于
rs.remove()
删除旧成员。
mongos
实例自动识别配置服务器副本集成员中的更改,而无需重新启动。
mongos
配置或DNS条目。¶对于副本集配置服务器,这些mongos
实例在--configdb
或sharding.configDB
设置配置服务器副本集名称中指定至少一个副本集成员。
这样,如果mongos
实例未在--configdb
或
sharding.configDB
设置中指定移除的副本集成员,则无需采取进一步措施。
但是,如果mongos
实例在--configdb
或configDB
设置中指定了已删除的成员,则可以:
mongos
,或