如何将MongoDB副本集转换为独立服务器
考虑一下,我有4个复制集,配置如下:如何将MongoDB副本集转换为独立服务器,mongodb,replicaset,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"} ] } 我可以使用 mongo--端
{
"_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--端口
有一些文档可以获取有关的信息,但是有人能告诉我如何从副本集中转换回独立吗?只需从副本集中删除主机(
rs.remove('host:port')
),在不使用replSet
参数的情况下重新启动它,它就可以再次独立。从副本集中删除所有辅助主机(rs.remove('host:port')),在不使用replSet参数(编辑/etc/mongo.conf)的情况下重新启动mongo deamon,辅助主机再次以独立模式启动
主主机很棘手,因为您无法使用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个文档
要删除警告,可以执行两个步骤:
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将处于独立模式,没有警告遵循以下步骤:
- 转到辅助服务器上的Linux shell,然后键入以下命令: sudo服务mongod启动 启动MongoDB复制-
- 转到“主”并键入以下命令以启动复制:
- 确保连接到mongos并运行
sh.startBalancer(超时,间隔)
- 对于关注的碎片,请转到admin数据库和
db.adminCommand({removeShard:“mongodb0”})
- 重复上述removeShard命令检查排放状态,等待排放完成
rs.steppdown(300)
db.shutdownServer()
- 注释掉replication.replSetName(-replSetName在命令行中)
- 注释掉shard或配置服务器的sharding.clusterRole(-shardsvc和-configsvr在命令行中)
- 注释掉net.port,然后将其更改为其他端口(命令行中的-port)
rs.remove(“主机:端口”)
在此之后,相关节点应在独立模式下启动并运行 如果您不想让它保存其信息,还可以删除
local
dbnotworking:``bippo:PRIMARY>rs.remove('rudi.dev:27017');{“errmsg”:“异常:在新的replset配置中找不到self”,“代码”:13433,“确定”:0}bippo:PRIMARY>rs.config(){“\u id”:“bippo”,“版本”:1,“成员”:[{“\u id”:0,“主机”:“rudi.dev:27017”}]``为convert ReplicaSet to single server编写一份完整的文档。关于建议删除本地
数据库的注释:您永远不知道未来的数据库版本将插入到该数据库中,并且注释可能在实际有意义和适用的几年后可读,但这可能会随着时间的推移而改变,因此,删除local
db可能会导致服务器损坏。最好的方法是使用指向文档的链接来备份该建议,该文档声称可以这样做以归档个人目标。我必须运行rs.initiate()
,以重新创建复制群集并使节点成为主节点。谢谢<代码>未授权在本地执行命令{delete:\“system.replset\”,删除:[{q:{u id:\“rs0\”},限制:0.0}],命令:true}执行删除操作。需要什么角色才能从系统.replset中删除?在MongoDB 4.0中,似乎无法删除本地数据库中的replset.
集合。我不得不放弃local
dbAFAIK,因为您的主服务器将不会成为standalon服务器。它将成为仅包含单个成员的副本集的主要成员。这里的任何答案都适用于我,除了这个。。谢谢。这不仅可以用于转换
#replication:
#replSetName: rs0
use local
db.dropDatabase()