考虑一下,我有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获取信息的文档,但有人可以告诉我如何从副本集转换回独立版本吗?
答案 0 :(得分:31)
从副本集中删除所有辅助主机(rs.remove('host:port')),重新启动没有replSet参数的mongo deamon(编辑/etc/mongo.conf),辅助主机再次以独立模式启动。 / p>
主要主机很棘手,因为您无法使用rs.remove将其从副本集中删除。 一旦只有副本集中的主节点,就应该退出mongo shell并停止mongo。然后编辑/etc/mongo.conf并删除replSet参数并再次启动mongo。 一旦启动mongo,你已经处于独立模式,但是mongo shell会提示如下消息:
2015-07-31T12:02:51.112 + 0100 [initandlisten] **警告:mongod在没有--replSet的情况下启动,但local.system.replset中还有1个文件
删除警告你可以做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将处于独立模式而不会发出警告
答案 1 :(得分:16)
只需从副本集(rs.remove('host:port')
)中删除主机,然后重新启动它,而不再使用replSet
参数,它会再次独立。
答案 2 :(得分:3)
MongoDB Documentation建议执行以下操作以对副本集成员执行维护,这会将副本集成员带入独立模式以进行进一步操作。只需很少的修改就可以独立完成:
sh.startBalancer(timeout, interval)
db.adminCommand( { removeShard: "mongodb0" } )
rs.stepDown(300)
db.shutdownServer()
rs.remove("host:port")
此后,所关注的节点应该以独立模式启动并运行。
答案 3 :(得分:1)
1)转到辅助服务器上的mongo shell
2)使用以下命令停止辅助服务器:
use admin
db.shutdownServer()
执行以下命令后。您的主服务器将自动成为独立服务器。
有关详细信息,请查看以下链接:http://www.tutespace.com/2016/03/stopping-and-starting-mongodb.html
答案 4 :(得分:1)
在Ubuntu机器上
#replication: #replSetName: rs0
use local
db.dropDatabase()