我使用默认配置启动了一些MongoDB副本集,并将它们添加到Cloud Manager,但由于默认的副本集名称为" rs0",因此很难说出来在UI中分开。有没有办法更改副本集的名称,最好不必删除并重新导入群集中的所有数据?
我已尝试使用rs.reconfig
(link),但它不允许您更改副本集名称。
答案 0 :(得分:21)
是的!这个过程非常简单:
mongod
mongod
备份。如果您使用/etc/mongod.conf
,请删除replication
部分。如果您不这样做,请忽略--replSet
mongod
选项
local
数据库
use local; db.dropDatabase()
mongod
/etc/mongod.conf
,请使用新名称重新添加replication
部分,然后启动mongod
。如果没有,请使用mongod
--replSet <new-name>
rs.initiate()
。 不要将任何参数传递给rs.initiate()
。 (它会因错误而失败)您想要设置的任何其他配置可以稍后使用rs.reconfig()
进行更改。rs.add('[secondary.host.name]')
将其添加到副本集。这并不要求您转储和重新导入数据,如果您将其自动化,则可以在最短的停机时间(以及辅助节点同步时性能下降的时间段)完成。
Here's an ansible playbook完成整个事情(假设您正在使用/etc/mongod.conf
并通过System V / Upstart / mongod
来管理service
。)< / p>
答案 1 :(得分:0)
您可以按照以下步骤删除现有的副本集,然后可以使用新的副本集启动mongods
启动所有没有--replSet
的mongods mongod --dbpath data / rs3 --port 27019 --oplogSize 64
注意: - 上述命令适用于Windows机器
为所有相应的mongod启动mongo删除现有的副本集 使用当地的 db.system.replset.remove({_ ID:&#39; OldReplicaSetName&#39;})
使用--replSet使用新副本集启动每个mongod ex - mongod --dbpath data / rs3 --port 27019 --oplogSize 64 --replSet mySet 注意: - 上述命令适用于Windows机器