从自管理副本集中删除成员
要删除 副本集中的节点,请使用以下任一程序。
使用以下方法删除成员: rs.remove()
关闭要删除的节点的
mongod
实例。如要关闭实例,请使用mongosh
连接并使用db.shutdownServer()
方法。连接到副本集的当前主节点。要确定当前主节点,请在连接到副本集的任何成员时使用
db.hello()
。使用以下任一形式的
rs.remove()
删除成员:rs.remove("mongod3.example.net:27017") rs.remove("mongod3.example.net") 如果副本集需要选择新的主节点,MongoDB 可能会短暂断开 Shell。在这种情况下,Shell 会自动重新连接。即使命令成功执行,Shell 也可能会显示
DBClientCursor::init call() failed
错误。
使用以下方法删除成员: rs.reconfig()
您可以通过使用副本配置文档重新配置副本集来删除成员,其中该成员已从 members
数组中删除。
rs.reconfig()
允许一次添加或删除不超过 1
voting
个节点。要从副本集中删除多个投票节点,可执行一系列 rs.reconfig()
操作,每次删除一个节点。请参阅重新配置只能添加或删除不超过一个投票节点,了解更多信息。
步骤
关闭要删除的成员的
mongod
实例。要关闭实例,请使用mongosh
连接并使用db.shutdownServer()
方法。连接到副本集的当前主节点。要确定当前主节点,请在连接到副本集的任何成员时使用
db.hello()
。使用
rs.conf()
方法查看当前配置文件,确定要删除的成员在members
数组中的位置:例子
mongod_C.example.net
位于以下配置文件的位置2
:{ "_id" : "rs", "version" : 7, "members" : [ { "_id" : 0, "host" : "mongod_A.example.net:27017" }, { "_id" : 1, "host" : "mongod_B.example.net:27017" }, { "_id" : 2, "host" : "mongod_C.example.net:27017" } ] } 将当前配置文档分配给变量
cfg
:cfg = rs.conf() 修改
cfg
对象,删除成员。例子
要删除
mongod_C.example.net:27017
,请使用以下 JavaScript 操作:cfg.members.splice(2,1) 通过发出以下命令,使用新配置覆盖副本集配置文档:
rs.reconfig(cfg) 要确认新配置,请执行
rs.conf()
。对于上面的示例,输出将是:
{ "_id" : "rs", "version" : 8, "members" : [ { "_id" : 0, "host" : "mongod_A.example.net:27017" }, { "_id" : 1, "host" : "mongod_B.example.net:27017" } ] }