sudo apt update && sudo apt upgrade -y
libcurl4、openssl等库支持。sudo apt install -y libcurl4 openssl liblzma5 gnupg
根据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
使用APT安装MongoDB官方版本(推荐6.0及以上):
sudo apt install -y mongodb-org
副本集是MongoDB高可用的核心组件,至少需要3个节点(1主2从)。
mongod.conf编辑/etc/mongod.conf(主节点/从节点均需配置),关键参数如下:
net:
port: 27017 # 监听端口(默认27017)
bindIp: 0.0.0.0 # 允许所有IP访问(生产环境建议限制为节点IP)
storage:
dbPath: /var/lib/mongodb # 数据存储路径(需提前创建:sudo mkdir -p /var/lib/mongodb)
journal:
enabled: true # 启用日志(确保数据持久化)
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log # 日志路径
replication:
replSetName: rs0 # 副本集名称(所有节点必须一致)
在所有节点上启动服务并设置开机自启:
sudo systemctl start mongod
sudo systemctl enable mongod
连接到任意节点(如主节点)的MongoDB Shell,执行初始化命令:
mongo --host <主节点IP> --port 27017
在Shell中输入以下命令(替换为实际节点IP):
rs.initiate({
_id: "rs0",
members: [
{ _id: 0, host: "<主节点IP>:27017" },
{ _id: 1, host: "<从节点1IP>:27017" },
{ _id: 2, host: "<从节点2IP>:27017" }
]
})
初始化成功后,会返回"ok": 1。
rs.status()
正常状态应显示所有节点为PRIMARY(主节点)或SECONDARY(从节点)。
仲裁者不存储数据,仅参与投票,用于奇数节点集群的故障转移。
mongod --port 27018 --dbpath /data/db3 --replSet rs0 --arbiterOnly true
rs.addArb("<仲裁节点IP>:27018")
若需要水平扩展数据存储,需配置分片集群(包含分片、配置服务器、路由服务器)。
Config Server存储集群元数据(如分片规则),需3个节点组成副本集。
/etc/mongodb/config.conf):systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/config.log
storage:
dbPath: /data/configdb
journal:
enabled: true
processManagement:
fork: true
pidFilePath: /var/run/mongodb/mongod.pid
net:
port: 21000
bindIp: 0.0.0.0
replication:
replSetName: cfgReplSet
sudo mongod --config /etc/mongodb/config.conf
mongo --host <config节点IP> --port 21000
输入命令:rs.initiate({
_id: "cfgReplSet",
configsvr: true,
members: [
{ _id: 0, host: "<config节点1IP>:21000" },
{ _id: 1, host: "<config节点2IP>:21000" },
{ _id: 2, host: "<config节点3IP>:21000" }
]
})
Mongos负责路由请求到对应分片,需指向Config Server。
/etc/mongodb/mongos.conf):systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongos.log
processManagement:
fork: true
pidFilePath: /var/run/mongodb/mongos.pid
net:
port: 20000
bindIp: 0.0.0.0
sharding:
configDB: cfgReplSet/<config节点1IP>:21000,<config节点2IP>:21000,<config节点3IP>:21000
sudo mongos --config /etc/mongodb/mongos.conf
mongo --host <mongos节点IP> --port 20000
sh.addShard("rs0/<分片节点1IP>:27017,<分片节点2IP>:27017,<分片节点3IP>:27017")
sh.enableSharding("myDatabase")
user_id字段哈希分片):sh.shardCollection("myDatabase.myCollection", { user_id: "hashed" })
sh.status()
mongod.conf中添加security.authorization: enabled,并创建用户。bindIp设置为节点实际IP,避免暴露给公网。mongodump备份数据,避免数据丢失。以上步骤覆盖了Debian上MongoDB集群的基础部署(副本集)及高可用/扩展配置(分片集群)。根据实际业务需求调整节点数量、分片规则等参数。