文档菜单
文档首页
/
MongoDB 手册
/ / /

将自托管 mongod 单实例转换为复制集

A独立 mongod 实例适用于测试和开发。独立实例不适合生产部署,因为它可能是一个故障点。一个 副本集,也称为 集群,提供了冗余和可用性。在 production 中始终使用副本集。

如果您有一个包含要在 production 中使用的数据的独立服务器,请首先将独立服务器转换为副本集。

重要

如果您将开发服务器转换为用于 production 的副本集,在将您的集群暴露给互联网之前,请参阅 安全清单

您可以从独立服务器轻松迁移到MongoDB Atlas 集群。MongoDB Atlas 是云中 MongoDB 部署的完全托管服务。要了解更多信息,请参阅 MongoDB Atlas 文档中的 迁移或导入数据

在将您的独立实例转换为之前,请考虑是否需要一个 副本集 或一个 分片集群 更适合您的负载。

分片集群是一种特殊类型的集群。分片集群提供冗余和可用性;它还将数据分布在分片上。分片通常托管在多个服务器上,并允许进行水平扩展。

要使用授权与副本集,还必须配置副本集成员使用X.509证书或密钥文件来执行内部身份验证。

有关更多信息,请参阅

1

使用mongosh连接到您的mongod实例。

mongosh

切换到admin数据库并运行shutdown

use admin
db.adminCommand(
{
shutdown: 1,
comment: "Convert to cluster"
}
)
2

在每个服务器上更新配置文件,并设置replSetName 设置。

replication:
replSetName: "rs0"
3

为副本集中的每个服务器配置成员身份验证。

配置副本集以使用 X.509 证书进行内部成员身份验证。

设置
选项
描述
设置用于身份验证的 TLS 模式。要将服务器配置为需要 X.509 证书身份验证,将此选项设置为 requireTLS
设置包含 TLS 证书的 .pem 文件的路径,该证书用于客户端连接。
设置包含证书颁发机构 (CA) 根证书链的文件的路径。
设置包含集群成员连接 TLS 证书的 .pem 文件的路径。
设置用于身份验证集群成员的模式。要使用 X.509 身份验证,将此选项设置为 x509

例如

replication:
replSetName: "rs0"
security:
clusterAuthMode: x509
net:
tls:
mode: requireTLS
certificateKeyFile: /etc/mongodb/client.pem
CAFile: /etc/mongodb/ca.pem
clusterFile: /etc/mongodb/member.pem

配置副本集以使用密钥文件进行内部成员身份验证。要验证,每个成员必须具有相同的密钥文件的副本。

设置
选项
描述
设置副本集密钥文件的路径。

例如

replication:
replSetName: "rs0"
security:
keyFile: /etc/mongodb/keyfile

配置一个无需授权的副本集。

警告

您仅应将此配置用于不可通过网络访问的内部副本集。

设置
选项
描述
设置MongoDB监听客户端连接的主机名或IP地址。为了阻止对服务器的网络访问,将此选项设置为localhost

例如

replication:
replSetName: "rs0"
net:
bindIp: localhost
4

为每个成员启动mongod

5

要初始化副本集,请使用mongosh重新连接到您的服务器实例。然后,运行rs.initiate()

rs.initiate()

您只需初始化一次副本集。

要查看副本集配置,请使用rs.conf()

要检查副本集的状态,请使用rs.status()

6

新的副本集有一个单独的主节点。下一步是向副本集添加新节点。在添加更多节点之前,请查看有关集群的文档

准备添加节点时,请使用 rs.add()

7

在将 mongod 转换为副本集后,更新应用程序使用的连接字符串为副本集的连接字符串。然后,重新启动应用程序。

后退

复制集