Docs 菜单

Docs 主页开发应用程序MongoDB Manual

重启分片集群

在此页面上

  • 禁用负载均衡器
  • 停止分片集群
  • 启动分片集群
  • 重新启用负载均衡器
  • 验证集群可访问性

本教程仅适用于 MongoDB 5.0。 对于早期版本的 MongoDB,请参阅相应版本的 MongoDB 手册。

此过程演示了重启分片集群的关闭和启动顺序。以不同的顺序停止或启动分片集群的组件,可能导致成员之间出现通信错误。例如,如果没有可用的配置服务器分片服务器可能会挂起。

重要

此程序只能在计划维护期内执行。在此期间,应用程序应停止对集群的所有读取和写入操作,以防止潜在的数据丢失或读取过时的数据。

禁用负载均衡器以停止数据段迁移,并且在该进程完成之前不要执行任何元数据写入操作。如果迁移正在进行,负载均衡器将在停止之前完成进行中的迁移。

要禁用负载均衡器,请连接到群集的 mongos 实例之一并发出以下命令:[1]

sh.stopBalancer()

要检查负载均衡器状态,请发出 sh.getBalancerState() 命令。

有关更多信息,请参阅禁用负载均衡器。

[1] 从 MongoDB 4.2 开始, sh.stopBalancer()还禁用分片集群的自动分割。
1

从每个 mongos 路由器上的 admin 数据库运行 db.shutdownServer()

use admin
db.shutdownServer()
2

从每个分片副本集成员上的 admin 数据库运行 db.shutdownServer(),关闭 mongod 进程。在关闭每个副本集中的主成员之前,先关闭所有从成员。

3

在每个配置服务器上,从 admin 数据库运行 db.shutdownServer(),关闭 mongod 进程。在关闭主节点之前,先关闭所有从节点。

1

启动每个 mongod 时,可使用配置文件或命令行指定 mongod 设置。有关启动参数的更多信息,请参阅 mongod 参考页面。

配置文件

如果使用配置文件,请启动 mongod,并将 --config 选项设置为配置文件路径。

mongod --config <path-to-config-file>

命令行

如果使用命令行选项,请使用 --configsvr--replSet--bind_ip 和其他适合部署的选项启动 mongod。例如:

mongod --configsvr --replSet <replica set name> --dbpath <path> --bind_ip localhost,<hostname(s)|ip address(es)>

启动所有配置服务器后,连接主成员 mongod 并运行 rs.status(),确认每个 CSRS 成员的健康状况和可用性。

2

启动每个 mongod 时,使用配置文件或命令行指定 mongod 设置。

配置文件

如果使用配置文件,请启动 mongod,并将 --config 选项设置为配置文件路径。

mongod --config <path-to-config-file>

命令行

如果使用命令行选项,请使用 --replSet--shardsvr--bind_ip 选项以及其他适合部署的选项启动 mongod。例如:

mongod --shardsvr --replSet <replSetname> --dbpath <path> --bind_ip localhost,<hostname(s)|ip address(es)>

启动每个分片的所有成员后,连接到每个主成员 mongod 并运行 rs.status(),确认每个成员的运行状况和可用性。

3

使用配置文件或命令行参数启动 mongos 路由器,从而指定配置服务器。

配置文件

如果使用配置文件,请启动 mongos,同时指定 --config 选项和配置文件的路径。

mongos --config <path-to-config>

有关配置文件的更多信息,请参阅配置选项。

命令行

如果使用命令行参数,请启动 mongos,并根据部署情况指定 --configdb--bind_ip 和其他选项。例如:

警告

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

mongos --configdb <configReplSetName>/cfg1.example.net:27019,cfg2.example.net:27019 --bind_ip localhost,<hostname(s)|ip address(es)>

包括适合您部署的任何其他选项。

重新启用负载均衡器以恢复数据段迁移

连接到集群的 mongos 实例之一,然后运行 sh.startBalancer() 命令:[2]

sh.startBalancer()

要检查负载均衡器状态,请发出 sh.getBalancerState() 命令。

有关更多信息,请参阅启用负载均衡器

[2] 从 MongoDB 4.2 开始, sh.startBalancer()还为分片集群启用自动分割。

mongo shell 连接到集群的其中一个 mongos 进程。使用 sh.status() 检查整个集群状态。

要确认所有分片均可访问和通信,请将测试数据插入临时分片集合中。确认数据正在集群中的每个分片之间进行拆分和迁移。您可以将 mongo Shell 连接到每个主分片,并使用 db.collection.find() 来验证数据是否按预期进行分片。

重要

为了防止潜在的数据丢失或读取过时的数据,在确认集群运行状况良好且可访问之前,不要启动应用程序对集群的读取和写入操作。

← 查看集群配置