一、操作
mongodb添加仲裁节点的时候,利用 rs.reconfig(cfg)
var cfg ={"_id":"cluster",
"protocolVersion" : 1,
"members":[
{"_id":1,"host":"127.0.0.1:36037","priority":20},
{"_id":2,"host":"127.0.0.1:36038","priority":3} ,
{"_id":3,"host":"127.0.0.1:36039"} ,
{"_id":4,"host":"127.0.0.1:36040","arbiterOnly":true}
]
}
rs.reconfig(cfg)
二、执行报错
{
"ok" : 0,
"errmsg" : "Reconfig attempted to install a config that would change the implicit default write concern. Use the setDefaultRWConcern command to set a cluster-wide write concern and try the reconfig again.",
"code" : 103,
"codeName" : "NewReplicaSetConfigurationIncompatible",
"$clusterTime" : {
"clusterTime" : Timestamp(1641302116, 1),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
},
"operationTime" : Timestamp(1641302116, 1)
}
如果执行rs.addArb("127.0.0.1:36040") ,这个执行无反应 ,一直卡着
三、解决方式
官网找了段命令
https://docs.mongodb.com/manual/reference/command/setDefaultRWConcern/
db.adminCommand({
"setDefaultRWConcern" : 1,
"defaultWriteConcern" : {
"w" : 2
}
})
执行以上命令之后,再次操作配置
rs.addArb("127.0.0.1:36040")同样也能成功了 (需要此时没有成为仲裁节点,如果已经是了,也会卡着)