将成员添加到副本集

概述img

本教程解释了如何向现有副本集添加额外节点 。有关复制部署模式的背景,请参阅副本集部署架构文档。

最大投票成员

一个副本集最多可以有七个有投票权的节点。要将成员添加到已经有七个投票成员的副本集,您必须将该成员添加 为非投票节点或从existing member.

初始化脚本

在生产部署中,您可以配置一个初始化脚本 来管理节点进程。

现有节点

您可以使用这些过程将新节点添加到现有集。您还可以使用相同的过程来“重新添加”已删除的节点。如果被删除的节点的数据仍然相对较新,则可以很容易地恢复和赶上。

数据文件

如果您有现有节点的备份或快照,您可以将数据文件(例如dbPath目录)移动到新系统并使用它们快速启动新节点

。这些文件必须是:

  • 来自同一副本集成员的数据文件的有效副本。有关详细信息,请参阅使用文件系统快照 文档备份和还原。

IMPORTANT

始终使用文件系统快照来创建现有副本集成员的副本。不要使用 mongodumpmongorestore播种一个新的副本集节点。

  • 比主节点作 日志中最旧的操作更新。新节点必须能够通过应用主操作日志中的操作成为当前节点。

IP绑定

WARNING

在绑定到非本地主机(例如可公开访问的)IP 地址之前,请确保您已保护集群免受未经授权的访问。有关安全建议的完整列表,请参阅 安全清单。至少,考虑 启用身份验证强化网络基础设施。

MongoDB 二进制文件,mongodmongos,默认绑定到 localhost。如果为二进制文件设置了net.ipv6配置文件设置或--ipv6命令行选项,则二进制文件还会绑定到本地主机 IPv6 地址。

默认情况下mongodmongos绑定到 localhost 的只接受来自在同一台计算机上运行的客户端的连接。这种绑定行为包括 mongosh以及您的副本集或分片集群的其他成员。远程客户端无法连接到仅绑定到本地主机的二进制文件。

要覆盖默认绑定并绑定到其他 IP 地址,请使用 net.bindIp配置文件设置或--bind_ip 命令行选项指定主机名或 IP 地址列表。

IMPORTANT

从 MongDB 5.0 开始,水平分割 DNS仅配置了 IP 地址的节点无法启动验证并报告错误。看disableSplitHorizonIPCheck

例如,以下mongod实例绑定到 localhost 和My-Example-Associated-Hostname与 IP 地址关联的主机名198.51.100.1

mongod --bind_ip localhost,My-Example-Associated-Hostname

为了连接到此实例,远程客户端必须指定主机名或其关联的 IP 地址198.51.100.1

mongosh --host My-Example-Associated-Hostname

mongosh --host 198.51.100.1

IMPORTANT

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

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

要求

  1. 一个活跃的副本集。
  2. 一个新的 MongoDB 系统能够支持您的数据集,活动副本集可以通过网络访问。

否则,请使用 MongoDB安装教程部署副本集 教程。

程序

准备数据目录

在将新节点添加到现有副本集之前,使用以下策略之一准备新节点的数据目录:

  • 确保新节点的数据目录包含数据。新成员将从现有节点复制数据。

    如果新节点处于恢复状态,它必须退出并成为从节点,然后 MongoDB 才能在复制过程中复制所有数据。此过程需要时间,但不需要管理员干预。

  • 从现有节点手动复制数据目录。新节点成为从节点,并将赶上副本集的当前状态。复制数据可能会缩短新节点成为当前节点的时间。

    确保您可以将数据目录复制到新节点,并在 oplog 允许的窗口内开始复制。否则,新实例将必须执行初始同步,这将完全重新同步数据,如重新同步副本集成员中所述。

    用于rs.printReplicationInfo()检查关于 oplog 的副本集节点的当前状态。

有关复制部署模式的背景,请参阅 副本集部署架构文档。

将成员添加到现有副本集

IMPORTANT

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

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

  1. 启动新mongod实例。指定数据目录和副本集名称。以下示例指定 /srv/mongodb/db0数据目录和rs0副本集:

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

WARNING

在绑定到非本地主机(例如可公开访问的)IP 地址之前,请确保您已保护集群免受未经授权的访问。有关安全建议的完整列表,请参阅 安全清单。至少,考虑 启用身份验证强化网络基础设施。

有关配置选项的更多信息,请参阅 mongod手册页。

NOTE

可选的

mongod.conf 您可以在配置文件中指定数据目录、副本集名称和ip绑定,并 mongod使用以下命令启动:

   mongod --config /etc/mongod.conf
  1. 连接到副本集的主节点。

    您只能在连接到主节点时添加节点。如果您不知道哪个成员是主节点,请登录副本集的任何节点并发出db.hello()命令。

  2. 用于rs.add()将新节点添加到副本集。将 传递member configuration document给方法。例如,要在 host 上添加一个节点 mongodb3.example.net,请发出以下命令:

    rs.add( { host: "mongodb3.example.net:27017" } )
    

WARNING

在 MongoDB 5.0 之前,新添加的从节点仍然算作投票节点,即使它在数据一致之前既不能提供读取服务也不能成为主要节点。如果您运行的是早于 5.0 的 MongoDB 版本并添加一个其votespriority设置大于零的辅助节点,这可能会导致大多数投票成员在线但无法选举主要节点的情况。为避免这种情况,请考虑最初使用 priority :0和添加新的辅助votes :0。然后,运行rs.status()以确保成员已转换为SECONDARY状态。最后,用于 rs.reconfig()更新其优先级和选票。

将 Standalone 转换为副本集从副本集中删除成员

原文链接 - https://docs.mongodb.com/manual/tutorial/expand-replica-set/

译者:陆文龙

Copyright © 上海锦木信息技术有限公司 all right reserved,powered by Gitbook文件修订时间: 2023-09-01 17:10:26

results matching ""

    No results matching ""