阅读量:51
以下是在CentOS上部署MongoDB分片的策略,基于搜索结果整理关键步骤及要点:
一、基础环境准备
-
安装MongoDB
通过官方YUM源或手动安装包部署,确保所有节点安装版本一致。sudo yum install -y mongodb-org -
配置网络与权限
- 确保节点间网络互通,防火墙开放MongoDB端口(默认27017、27019等)。
- 创建专用数据目录并授权(如
/data/configdb、/data/shard1等),避免使用默认路径。
二、分片集群核心组件部署
1. 配置服务器(Config Server)
- 作用:存储集群元数据,需至少3个节点保障高可用。
- 部署步骤:
- 启动配置服务器,指定
--configsvr参数和副本集名称:mongod --configsvr --replSet configReplSet --dbpath /data/configdb --port 27019 - 初始化副本集(连接到任意配置服务器执行):
rs.initiate({ _id: "configReplSet", configsvr: true, members: [ { _id: 0, host: "cfg1.example.com:27019" }, { _id: 1, host: "cfg2.example.com:27019" }, { _id: 2, host: "cfg3.example.com:27019" } ] })
- 启动配置服务器,指定
2. 分片服务器(Shard Server)
- 作用:存储实际数据,每个分片建议配置为副本集。
- 部署步骤:
- 启动分片服务器,指定
--shardsvr参数和副本集名称:mongod --shardsvr --replSet shard1ReplSet --dbpath /data/shard1 --port 27018 - 初始化副本集(以3节点为例):
rs.initiate({ _id: "shard1ReplSet", members: [ { _id: 0, host: "shard1a.example.com:27018" }, { _id: 1, host: "shard1b.example.com:27018" }, { _id: 2, host: "shard1c.example.com:27018" } ] }) - 重复上述步骤部署其他分片(如shard2、shard3)。
- 启动分片服务器,指定
3. 路由服务器(Mongos)
- 作用:作为应用访问入口,路由请求到对应分片。
- 部署步骤:
- 启动Mongos,指定配置服务器副本集:
mongos --configdb configReplSet/cfg1.example.com:27019,cfg2.example.com:27019,cfg3.example.com:27019 --port 27017
- 启动Mongos,指定配置服务器副本集:
三、分片集群配置与验证
-
添加分片到集群
连接到Mongos,通过sh.addShard()添加分片(需指定分片副本集名称和成员):sh.addShard("shard1ReplSet/shard1a.example.com:27018,shard1b.example.com:27018,shard1c.example.com:27018") -
启用分片
- 启用数据库分片:
sh.enableSharding("yourDatabase") - 对集合指定分片键(如
_id或自定义字段):sh.shardCollection("yourDatabase.yourCollection", { "shardKey": 1 })
- 启用数据库分片:
-
验证集群状态
通过sh.status()查看分片集群状态,确认分片、副本集和路由信息正常。
四、关键注意事项
- 副本集配置:分片服务器和配置服务器均需配置为副本集,确保数据冗余和高可用。
- 端口规划:配置服务器(27019)、分片服务器(27018)、Mongos(27017)需使用不同端口,避免冲突。
- 硬件资源:根据数据规模合理分配CPU、内存和磁盘,分片服务器建议配置SSD存储提升性能。
- 安全配置:启用认证(如SCRAM-SHA-256)和加密传输(TLS/SSL),限制非必要端口访问。
五、监控与维护
- 使用
mongostat、mongotop或MongoDB Atlas监控集群性能。 - 定期备份配置服务器和分片数据,可通过
mongodump工具实现。
以上步骤参考自,可根据实际环境调整节点数量和配置参数。