本教程描述了将 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 地址的节点将无法启动验证并且不会启动。 :::
- 关闭 standalone mongod instance。
- 重启 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。 至少,考虑启用身份验证和强化网络基础设施。
:::
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 Options 和 mongod 手册页。
- 将 mongosh 连接到 mongod 实例。
- 使用 rs.initiate() 启动新的副本集:
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