本教程描述了将 standalone mongod instance 转换为 replica set 的过程。 使用 standalone instance 进行测试和开发,但始终在生产中使用 replica set

该过程特定于不属于 sharded cluster(分片集群)的实例。 要将 shard standalone instance 转换为 shared replica set,请参阅 Convert a Shard Standalone to a Shard Replica Set

在不使用预先存在的 mongod 实例的情况下部署 replica set,请参阅 Deploy a Replica Set

要安装 standalone instance,请参阅 installation tutorials

Procedure 过程

:::warning 为避免由于 IP 地址更改而导致配置更新,请使用 DNS 主机名而不是 IP 地址。 在配置副本集成员或分片集群成员时,使用 DNS 主机名而不是 IP 地址尤为重要。

使用主机名而不是 IP 地址来配置跨网络分割的集群。 从 MongDB 5.0 开始,仅配置了 IP 地址的节点将无法启动验证并且不会启动。 :::

  1. 关闭 standalone mongod instance。
  2. 重启 instance。使用 [--replSet](https://www.mongodb.com/docs/manual/reference/program/mongod/#std-option-mongod.--replSet) 选项指定新 replica set(副本集) 的名称。

例如,以下命令将 standalone instance 作为名为 rs0 的新 replica set(副本集) 的成员启动。 该命令使用 standalone 的现有数据库路径 /srv/mongodb/db0: :::danger 在绑定到 non-localhost(例如可公开访问的)IP 地址之前,请确保您已保护您的集群免受未经授权的访问。 有关安全建议的完整列表,请参阅 Security Checklist。 至少,考虑启用身份验证强化网络基础设施。 :::

  1. mongod --port 27017 --dbpath /srv/mongodb/db0 --replSet rs0 --bind_ip localhost,<hostname(s)|ip address(es)>

如果您的应用程序连接到多个 replica set,则每个 replica set 都必须具有不同的名称。一些驱动程序按 replica set 名称对 replica set 连接进行分组。
有关配置选项的更多信息,请参阅 Configureation File Optionsmongod 手册页。

  1. mongosh 连接到 mongod 实例。
  2. 使用 rs.initiate() 启动新的副本集:
    1. rs.initiate()
    replica set 现在可以运行了。要查看 replica set 配置,请使用 rs.conf()。要检查 replica set 的状态,请使用 rs.status()

要将成员添加到此 replica set,请使用 rs.add() 方法。有关将成员添加到 replica set 的更多信息,请参阅 Add Members to a Replica Set

TIP 另请参阅: Convert a Shard Standalone to a Shard Replica Set 将独立分片转换为分片副本集

参考

https://www.mongodb.com/docs/manual/tutorial/convert-standalone-to-replica-set