如何重命名mongodb副本集?

时间:2015-10-28 20:04:44

标签: mongodb

我使用默认配置启动了一些MongoDB副本集,并将它们添加到Cloud Manager,但由于默认的副本集名称为" rs0",因此很难说出来在UI中分开。有没有办法更改副本集的名称,最好不必删除并重新导入群集中的所有数据?

我已尝试使用rs.reconfiglink),但它不允许您更改副本集名称。

2 个答案:

答案 0 :(得分:21)

是的!这个过程非常简单:

  1. 以非复制模式启动所有节点
    • 在每台服务器上停止mongod
    • 启动mongod备份。如果您使用/etc/mongod.conf,请删除replication部分。如果您不这样做,请忽略--replSet
    • mongod选项
  2. 刷新缓存复制集配置的local数据库
    • 在每台服务器上,以admin用户身份打开mongo shell并运行use local; db.dropDatabase()
  3. 以复制模式再次启动所有节点
    • 在每台服务器上停止mongod
    • 如果您使用/etc/mongod.conf,请使用名称重新添加replication部分,然后启动mongod。如果没有,请使用mongod
    • 启动--replSet <new-name>
  4. 初始化副本集
    • 在其中一个节点上以admin用户身份打开mongo shell。 (它将成为新的主要成员)
    • 运行rs.initiate()不要将任何参数传递给rs.initiate()。 (它会因错误而失败)您想要设置的任何其他配置可以稍后使用rs.reconfig()进行更改。
    • 对于每个辅助服务器,请运行rs.add('[secondary.host.name]')将其添加到副本集。
    • 等待辅助人员同步
  5. 这并不要求您转储和重新导入数据,如果您将其自动化,则可以在最短的停机时间(以及辅助节点同步时性能下降的时间段)完成。

    Here's an ansible playbook完成整个事情(假设您正在使用/etc/mongod.conf并通过System V / Upstart / mongod来管理service。)< / p>

答案 1 :(得分:0)

您可以按照以下步骤删除现有的副本集,然后可以使用新的副本集启动mongods

  1. 启动所有没有--replSet

    的mongods

    mongod --dbpath data / rs3 --port 27019 --oplogSize 64
    注意: - 上述命令适用于Windows机器

  2. 为所有相应的mongod启动mongo删除现有的副本集 使用当地的 db.system.replset.remove({_ ID:&#39; OldReplicaSetName&#39;})

  3. 使用--replSet使用新副本集启动每个mongod ex - mongod --dbpath data / rs3 --port 27019 --oplogSize 64 --replSet mySet     注意: - 上述命令适用于Windows机器