|
1、报错信息 mongos> sh.addShard("rs_one/192.168.142.48:27017,192.168.142.48:27018,192.168.142.48:27019")
{
"ok" : 0,
"errmsg" : "E11000 duplicate key error collection: admin.system.version index: _id_ dup key: { : \"shardIdentity\" }",
"code" : 11000,
"codeName" : "DuplicateKey",
......
}
2、解决,连接rs_one主节点,删除admin.system.version集合中记录
rs_one:PRIMARY> db.system.version.remove({"_id":"shardIdentity"})
WriteResult({
"writeError" : {
"code" : 13,
"errmsg" : "not authorized on admin to execute command { delete: \"system.version\", ordered: true, $clusterTime: { clusterTime: Timestamp(1528280178, 1), signature: { hash: BinData(0, 914ECCE14D194F41251247EAB282E1F346D4C7D0), keyId: 6563852648502525972 } }, $db: \"admin\" }"
}
})
报错由于admin用户的角色是root,不具有修改admin.system.version的权限,添加对应权限
db.grantRolesToUser("admin", [ { role: "__system", db: "admin" } ])
3、再次删除
rs_one:PRIMARY> db.system.version.remove({"_id":"shardIdentity"})
WriteResult({
"nRemoved" : 0,
"writeError" : {
"code" : 40070,
"errmsg" : "cannot delete shardIdentity document while in --shardsvr mode"
}
})
删除时报错,意思是说不能在分片模式下删除这张表中的这条记录,然后我们关闭rs_one,然后以非shardsvr的方式启动,删除这条记录后,再以shardsvr方式启动
4、以非shardsvr的方式启动,删除这条记录,再以shardsvr方式启动
1)配置文件注释掉 #shardsvr=true
2)重新启动实例
3)删除system.version对应记录,db.system.version.remove({"_id":"shardIdentity"})
4)配置文件开启 shardsvr=true
5)重新启动实例
5、重新addShard
ongos> sh.addShard("rs_one/192.168.142.48:27017,192.168.142.48:27018,192.168.142.48:27019")
{
"shardAdded" : "rs_one",
"ok" : 1,
"$clusterTime" : {
"clusterTime" : Timestamp(1528284663, 7),
"signature" : {
"hash" : BinData(0,"qLejzYtJDR1Bpt84+Hapdi1w1/I="),
"keyId" : NumberLong("6563903792973086740")
}
},
"operationTime" : Timestamp(1528284663, 7)
}
|
|
|