Amo*_*rni 29 mongodb replicaset
考虑一下,我有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"}
]
}
Run Code Online (Sandbox Code Playgroud)
我可以使用连接到所有集
mongo --port <port>
有关于获取有关将独立转换为副本集的信息的文档,但有人可以告诉我如何从副本集转换回独立版本吗?
小智 34
从副本集中删除所有辅助主机(rs.remove('host:port')),重新启动没有replSet参数的mongo deamon(编辑/etc/mongo.conf),并且辅助主机再次以独立模式启动.
主要主机很棘手,因为您无法使用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
Run Code Online (Sandbox Code Playgroud)
2)或者如果你不想这么激进,你可以这样做:
use local
db.system.replset.find()
Run Code Online (Sandbox Code Playgroud)
它会提示如下消息:
{ "_id" : "replicaSetName", "version" : 1, "members" : [ { "_id" : 0, "host" : "hostprimary:mongoport" } ] }
Run Code Online (Sandbox Code Playgroud)
那么你将使用以下方法擦除它:
db.system.replset.remove({ "_id" : "replicaSetName", "version" : 1, "members" : [ { "_id" : 0, "host" : "hostprimary:mongoport" } ] })
Run Code Online (Sandbox Code Playgroud)
它可能会提示:
WriteResult({ "nRemoved" : 1 })
Run Code Online (Sandbox Code Playgroud)
现在,您可以重新启动mongo并且警告应该消失,并且您将使mongo处于独立模式而不会发出警告
Ser*_*sev 17
只需从副本集(rs.remove('host:port'))中删除主机,不带replSet参数重新启动它,它就会再次独立.
在 Ubuntu 机器上
Run Code Online (Sandbox Code Playgroud)#replication: #replSetName: rs0
use local
db.dropDatabase()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30097 次 |
| 最近记录: |