简体   繁体   中英

How to update _id in Mongodb Replica Set configuration?

I had 5 mongo members in Replica Set. After I deleted 3 from it.

How can I change "_id" in others members to values "0", "1" and "2"?

rs.conf()
{
        "_id" : "rs0",
        "version" : 151261,
        "members" : [
                {
                        "_id" : 3,
                        "host" : "mongodb3:27017"
                },
                {
                        "_id" : 4,
                        "host" : "mongodb4:27017"
                },
                {
                        "_id" : 5,
                        "host" : "ok:27017",
                        "arbiterOnly" : true
                }
        ]
}

Directly editing the replica set configuration may not be an elegant way. Instead use the rs.remove(hostname) command to remove a member from replica set , this way you need not have to bring down the primary during reconfiguration which will automatically assign ascending order values to "_id" field.

Try dropping the slaves collection as described here: http://docs.mongodb.org/manual/tutorial/troubleshoot-replica-sets/#duplicate-key-error-on-local-slaves

The master will recreate the collection the next time it is required.

You could try this in the Mongo console:

conf = rs.conf()

conf.members[0]._id = 0
conf.members[1]._id = 1
conf.members[2]._id = 2

rs.reconfig(conf)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM