重新启动分片群集
在本页面
本教程特定于 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
为防止潜在的数据丢失或读取过时的数据,请先确认集群运行状况良好且可访问,然后再开始对集群进行应用程序读写。