考虑一下,我有 4 个复制集,配置如下:
{
"_id": "rs_0",
"version": 5,
"members" : [
{"_id": 1, "host": "127.0.0.1:27001"},
{"_id": 2, "host": "127.0.0.1:27002"},
{"_id": 3, "host": "127.0.0.1:27003"},
{"_id": 4, "host": "127.0.0.1:27004"}
]
}
我可以使用
mongo --port <port>
有获取Convert a Standalone to a Replica Set 信息的文档,但是谁能告诉我如何从副本集转换回独立?
最佳答案
从副本集中删除所有辅助主机 (rs.remove('host:port')),重新启动不带 replSet 参数的 mongo 守护进程(编辑/etc/mongo.conf),辅助主机再次以独立模式启动。
Primary 主机是一个棘手的问题,因为您无法使用 rs.remove 从副本集中删除它。 一旦副本集中只有主节点,您应该退出 mongo shell 并停止 mongo。然后编辑/etc/mongo.conf 并删除 replSet 参数并再次启动 mongo。 启动 mongo 后,您已经处于独立模式,但 mongo shell 会提示如下消息:
2015-07-31T12:02:51.112+0100 [initandlisten] ** WARNING: mongod started without --replSet yet 1 documents are present in local.system.replset
要删除警告,您可以执行 2 个步骤: 1)删除本地数据库并重新启动mongo:
use local
db.dropDatabase();
/etc/init.d/mongod restart
2)或者如果你不想这么激进,你可以这样做:
use local
db.system.replset.find()
它会提示如下消息:
{ "_id" : "replicaSetName", "version" : 1, "members" : [ { "_id" : 0, "host" : "hostprimary:mongoport" } ] }
然后您将使用以下方法删除它:
db.system.replset.remove({ "_id" : "replicaSetName", "version" : 1, "members" : [ { "_id" : 0, "host" : "hostprimary:mongoport" } ] })
它可能会提示:
WriteResult({ "nRemoved" : 1 })
现在,您可以重新启动 mongo,警告应该消失了,您的 mongo 将处于独立模式而不会出现警告
https://stackoverflow.com/questions/16914281/