MongoDB在Debian上的集群搭建流程是怎样的
导读:MongoDB在Debian上的集群搭建流程(以分片集群为例) 1. 准备工作 系统更新:确保所有节点(配置服务器、分片服务器、mongos路由器)的系统为最新状态。sudo apt update && sudo apt...
MongoDB在Debian上的集群搭建流程(以分片集群为例)
1. 准备工作
- 系统更新:确保所有节点(配置服务器、分片服务器、mongos路由器)的系统为最新状态。
sudo apt update & & sudo apt upgrade -y - 安装依赖:安装MongoDB所需的依赖包。
sudo apt install -y libcurl4 openssl liblzma5 gnupg - 添加MongoDB官方仓库:根据Debian版本选择对应仓库(以Debian 11 Bullseye为例)。
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add - echo "deb [arch=amd64,arm64] https://repo.mongodb.org/apt/debian bullseye/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list sudo apt update
2. 安装MongoDB
在所有节点上安装MongoDB:
sudo apt install -y mongodb-org
安装完成后,MongoDB服务会自动启动(默认端口27017)。
3. 配置配置服务器(Config Servers)
配置服务器存储集群元数据(如分片信息、集合分片规则),需至少3个节点以保证高可用。
3.1 创建数据目录
sudo mkdir -p /data/configdb
sudo chown -R mongodb:mongodb /data/configdb
3.2 配置文件(/etc/mongod.conf)
编辑配置文件,指定configsvr角色、副本集名称、端口(建议27019):
storage:
dbPath: /data/configdb
journal:
enabled: true
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
net:
port: 27019
bindIp: 0.0.0.0 # 允许所有节点访问
replication:
replSetName: configReplSet
sharding:
clusterRole: configsvr
3.3 启动配置服务器
sudo systemctl start mongod
sudo systemctl enable mongod # 设置开机自启
3.4 初始化副本集
连接到任意配置服务器节点,执行初始化命令:
mongo --port 27019
在mongo shell中输入:
rs.initiate({
_id: "configReplSet",
configsvr: true,
members: [
{
_id: 0, host: "config1.example.com:27019" }
,
{
_id: 1, host: "config2.example.com:27019" }
,
{
_id: 2, host: "config3.example.com:27019" }
]
}
)
验证副本集状态:
rs.status()
4. 配置分片服务器(Shard Servers)
分片服务器存储实际数据,每个分片应为一个副本集(建议3节点)。
4.1 创建数据目录(以shard1为例)
sudo mkdir -p /data/shard1
sudo chown -R mongodb:mongodb /data/shard1
4.2 配置文件(/etc/mongod_shard1.conf)
编辑配置文件,指定shardsvr角色、副本集名称、端口(建议27018):
storage:
dbPath: /data/shard1
journal:
enabled: true
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/shard1.log
net:
port: 27018
bindIp: 0.0.0.0
replication:
replSetName: shard1ReplSet
sharding:
clusterRole: shardsvr
4.3 启动分片服务器
sudo mongod --config /etc/mongod_shard1.conf
4.4 初始化副本集
连接到分片服务器节点,执行初始化命令:
mongo --port 27018
在mongo shell中输入:
rs.initiate({
_id: "shard1ReplSet",
members: [
{
_id: 0, host: "shard1.example.com:27018" }
,
{
_id: 1, host: "shard1.example.com:27019" }
,
{
_id: 2, host: "shard1.example.com:27020" }
]
}
)
验证副本集状态:
rs.status()
重复上述步骤,配置其他分片(如shard2、shard3)。
5. 配置路由服务器(Mongos)
mongos是客户端与集群的接口,负责请求路由。
5.1 创建数据目录
sudo mkdir -p /data/mongos
sudo chown -R mongodb:mongodb /data/mongos
5.2 配置文件(/etc/mongod_mongos.conf)
编辑配置文件,指定配置服务器地址(需包含所有config servers):
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongos.log
net:
port: 27017
bindIp: 0.0.0.0
sharding:
configDB: configReplSet/config1.example.com:27019,config2.example.com:27019,config3.example.com:27019
5.3 启动mongos
sudo mongos --config /etc/mongod_mongos.conf
5.4 添加配置服务器到mongos
连接到mongos节点,添加配置服务器(需与配置文件一致):
mongo --port 27017
在mongo shell中输入:
sh.addShardToCluster("configReplSet/config1.example.com:27019")
6. 添加分片到集群
连接到mongos节点,将分片添加到集群:
mongo --port 27017
在mongo shell中输入(以shard1为例):
sh.addShard("shard1ReplSet/shard1.example.com:27018")
重复上述命令,添加其他分片(如shard2、shard3)。
7. 启用数据库和集合分片
7.1 启用数据库分片
sh.enableSharding("mydatabase") // 替换为你的数据库名
7.2 启用集合分片
选择一个分片键(如_id或业务字段),执行分片操作:
sh.shardCollection("mydatabase.mycollection", {
"shardKey": 1 }
) // 替换为你的集合名和分片键
验证分片状态:
sh.status()
8. 验证集群
- 检查配置服务器状态:
sh.status("configsvr") - 检查分片状态:
sh.status() - 插入测试数据:
use mydatabase for (let i = 1; i < = 1000; i++) { db.mycollection.insert({ "shardKey": i, "data": "test" + i } ) } - 查看数据分布:
db.mycollection.getShardDistribution()
注意事项
- 安全配置:生产环境需启用身份验证(
security.authorization: enabled)和SSL/TLS加密。 - 监控维护:使用MongoDB Atlas、Compass或第三方工具监控集群健康状态。
- 备份策略:定期备份配置服务器和分片数据,避免数据丢失。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: MongoDB在Debian上的集群搭建流程是怎样的
本文地址: https://pptw.com/jishu/745532.html
