重新启动分片群集

在本页面

本教程特定于 MongoDB 3.6. 对于 MongoDB 的早期版本,请参考《 MongoDB 手册》的相应版本。

此过程演示了重新启动分片群集的关闭和启动 Sequences。以不同的 Sequences 停止或启动分片群集的组件可能会导致成员之间的通信错误。例如,如果没有config servers可用,则shard个服务器可能会挂起。

Important

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

禁用平衡器

禁用平衡器以停止chunk migration并且在该过程完成之前不要执行任何元数据写入操作。如果正在进行迁移,那么平衡器将在停止之前完成正在进行的迁移。

要禁用平衡器,请连接到群集的mongos实例之一,然后发出以下命令:

sh.stopBalancer()

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

有关更多信息,请参见禁用平衡器

停止分片集群

停止 mongosRouter。

在每个mongosRouter 上的admin数据库中运行db.shutdownServer()

use admin
db.shutdownServer()

停止每个分片副本集。

在每个shard副本集成员的admin数据库中运行db.shutdownServer()以关闭其mongod进程。在关闭每个副本集中的主要成员之前,请先关闭所有辅助成员。

停止配置服务器。

在每个config servers上的admin数据库中运行db.shutdownServer()以关闭其mongod进程。关闭主要节点之前,请关闭所有次要成员。

启动分片群集

启动配置服务器。

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

Configuration File

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

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

Command Line

如果使用命令行选项,请使用--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 成员的运行状况和可用性。

启动每个分片副本集。

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

Configuration File

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

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

Command Line

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

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

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

启动 mongosRouter。

使用配置文件或命令行参数启动mongosRouter 以指定配置服务器。

Configuration File

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

mongos --config <path-to-config>

有关配置文件的更多信息,请参见configuration options

Command Line

如果使用命令行参数,请启动mongos并指定--configdb--bind_ip和其他适合您的部署的选项。例如:

Warning

绑定到非 localhost(例如可公开访问)的 IP 地址之前,请确保已保护群集免受未经授权的访问。有关安全建议的完整列表,请参见Security Checklist。至少考虑enabling authentication加强网络基础设施

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

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

重新启用平衡器

重新启用平衡器以恢复chunk migrations

连接到集群的mongos实例之一并运行sh.startBalancer()命令:

sh.startBalancer()

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

有关更多信息,请参见启用平衡器

验证群集可访问性

mongo Shell 连接到群集的mongos进程之一。使用sh.status()检查总体群集状态。

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

Important

为防止潜在的数据丢失或读取过时的数据,请先确认集群运行状况良好且可访问,然后再开始对集群进行应用程序读写。