Ubuntu MongoDB配置分片集群步骤
Ubuntu MongoDB配置分片集群步骤
1. 准备工作
- 环境要求:确保所有节点(配置服务器、分片服务器、路由服务器)已安装Ubuntu系统,且网络互通(开放27017-27019等端口)。
- 时间同步:所有节点需配置NTP服务(如
sudo timedatectl set-ntp true
),避免时间偏差导致副本集同步失败。 - MongoDB版本:建议使用MongoDB 4.4及以上版本(支持更稳定的分片功能)。
2. 安装MongoDB
在所有节点上执行以下命令安装MongoDB(以Ubuntu 22.04为例):
sudo apt update
sudo apt install -y mongodb-org
安装完成后,启动MongoDB服务并设置开机自启:
sudo systemctl start mongod
sudo systemctl enable mongod
3. 配置配置服务器(Config Servers)
配置服务器存储集群元数据(如分片信息、集合分布),需至少3个节点以实现高可用。
3.1 创建数据目录
sudo mkdir -p /data/configdb
sudo chown -R $(whoami) /data/configdb # 授予当前用户读写权限
3.2 启动配置服务器
以副本集模式启动配置服务器(假设节点IP为192.168.1.101
、192.168.1.102
、192.168.1.103
):
mongod --configsvr --replSet configReplSet --dbpath /data/configdb --port 27019
3.3 初始化副本集
连接到任意配置服务器,执行初始化命令:
mongo --port 27019
在mongo shell中输入:
rs.initiate({
_id: "configReplSet",
configsvr: true,
members: [
{
_id: 0, host: "192.168.1.101:27019" }
,
{
_id: 1, host: "192.168.1.102:27019" }
,
{
_id: 2, host: "192.168.1.103:27019" }
]
}
)
4. 配置分片服务器(Shard Servers)
分片服务器存储实际数据,每个分片通常为一个副本集(建议至少3个节点)。
4.1 创建数据目录(以第一个分片为例)
sudo mkdir -p /data/shard1
sudo chown -R $(whoami) /data/shard1
4.2 启动分片服务器
以副本集模式启动分片服务器(假设节点IP为192.168.1.201
、192.168.1.202
、192.168.1.203
):
mongod --shardsvr --replSet shard1ReplSet --dbpath /data/shard1 --port 27018
4.3 初始化副本集
连接到任意分片服务器,执行初始化命令:
mongo --port 27018
在mongo shell中输入:
rs.initiate({
_id: "shard1ReplSet",
members: [
{
_id: 0, host: "192.168.1.201:27018" }
,
{
_id: 1, host: "192.168.1.202:27018" }
,
{
_id: 2, host: "192.168.1.203:27018" }
]
}
)
重复上述步骤,配置其他分片服务器(如shard2ReplSet
、shard3ReplSet
)。
5. 配置路由服务器(Mongos)
路由服务器是应用程序与分片集群的接口,负责请求路由。
5.1 启动路由服务器
mongos --configdb configReplSet/192.168.1.101:27019,192.168.1.102:27019,192.168.1.103:27019 --port 27017
注:configReplSet
需与配置服务器的副本集名称一致,节点IP需替换为实际地址。
6. 添加分片到集群
连接到路由服务器,添加分片(以shard1ReplSet
为例):
mongo --port 27017
在mongo shell中输入:
sh.addShard("shard1ReplSet/192.168.1.201:27018,192.168.1.202:27018,192.168.1.203:27018")
重复上述命令,添加其他分片(如shard2ReplSet
、shard3ReplSet
)。
7. 启用数据库和集合分片
7.1 启用数据库分片
sh.enableSharding("mydatabase") // 替换为实际数据库名
7.2 选择分片键并启用集合分片
分片键决定了数据分布,需选择高基数(唯一值多)、低频率(变化少)的字段(如userId
、orderId
):
sh.shardCollection("mydatabase.mycollection", {
"userId": 1 }
) // 替换为实际集合名和分片键
注:1
表示升序索引,-1
表示降序索引。
8. 验证分片集群状态
连接到路由服务器,查看集群状态:
mongo --port 27017
sh.status()
输出应包含配置服务器、分片服务器、路由服务器的信息,以及分片键、数据分布情况。
注意事项
- 分片键选择:避免选择低基数字段(如性别),否则会导致数据分布不均。
- 监控维护:使用
mongostat
、mongotop
或MongoDB Atlas监控集群性能,定期备份数据(如使用mongodump
)。 - 安全配置:启用身份验证(
--auth
参数)、配置防火墙(仅允许可信IP访问MongoDB端口),避免未授权访问。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu MongoDB配置分片集群步骤
本文地址: https://pptw.com/jishu/726294.html