繁体   English   中英

如何重命名 mongodb 副本集?

[英]How do I rename a mongodb replica set?

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

我试过使用rs.reconfig ( link ) 但它不允许您更改副本集名称。

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

  1. 以非复制模式启动所有节点
    • 在每台服务器上停止mongod
    • 启动mongod备份。 如果您使用/etc/mongod.conf ,请删除replication部分。 如果不这样做,请省略mongod--replSet选项
  2. 刷新缓存复制集配置的local数据库

    • 在每台服务器上,以 admin 用户身份打开一个 mongo shell 并运行use local; db.dropDatabase() use local; db.dropDatabase() (确保管理员用户/root 用户在local数据库上具有dbAdmin角色)
  3. 以复制模式再次启动所有节点

    • 在每台服务器上停止mongod
    • 如果您使用/etc/mongod.conf ,请使用名称重新添加replication部分并启动mongod 如果没有,请使用--replSet <new-name>启动mongod
  4. 初始化副本集
    • 在其中一个节点上以管理员用户身份打开 mongo shell。 (它将成为新的小学)
    • 运行rs.initiate() 不要将任何参数传递给rs.initiate() (它会因错误而失败rs.reconfig()稍后可以使用rs.reconfig()更改您要设置的任何其他配置。
    • 在您运行rs.initiate()的同一节点上,对于每个辅助节点,运行rs.add('[secondary.host.name]')以将其添加到副本集。
    • 等待辅助节点同步

这不需要您转储和重新导入您的数据,如果您将其自动化,则可以在最短的停机时间(以及辅助同步时性能下降的一段时间)内完成。

这是一个完整的剧本(假设您正在使用/etc/mongod.conf并通过 System V/Upstart/things that speak service管理mongod 。)

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

  1. 在没有 --replSet 的情况下启动所有 mongod

    mongod --dbpath 数据/rs3 --port 27019 --oplogSize 64
    注意: - 以上命令适用于 windows 机器

  2. 为所有相应的 mongod 启动 mongo 删除现有的副本集使用本地
    db.system.replset.remove({_id:'OldReplicaSetName'})

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM