sudo apt update && sudo apt upgrade -y
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
bullseye替换为buster):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
sudo apt install -y mongodb-org
sudo systemctl start mongod
sudo systemctl enable mongod
编辑MongoDB主配置文件(/etc/mongod.conf),添加或修改以下关键参数:
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 # 日志路径(需提前创建:sudo mkdir -p /var/log/mongodb)
net:
port: 27017 # 监听端口(默认27017)
bindIp: 0.0.0.0 # 允许所有IP访问(生产环境建议限制为节点IP)
replication:
replSetName: rs0 # 副本集名称(所有节点需一致)
保存后重启MongoDB服务使配置生效:
sudo systemctl restart mongod
连接到任意一个MongoDB节点(如node1)的shell:
mongo --host <node1_ip> --port 27017
在shell中执行初始化命令(将<node1_ip>、<node2_ip>、<node3_ip>替换为实际节点IP):
rs.initiate({
_id: "rs0",
members: [
{ _id: 0, host: "<node1_ip>:27017" },
{ _id: 1, host: "<node2_ip>:27017" },
{ _id: 2, host: "<node3_ip>:27017" }
]
})
初始化成功后会返回"ok": 1。
在mongo shell中执行以下命令,查看副本集节点状态:
rs.status()
正常情况下,应显示所有节点处于SECONDARY或PRIMARY状态(其中一个节点会自动选举为PRIMARY,负责写操作)。
在所有节点上生成相同的密钥文件(需保密):
openssl rand -base64 756 > /etc/mongodb-keyfile
sudo chmod 600 /etc/mongodb-keyfile
编辑/etc/mongod.conf,添加以下配置:
security:
keyFile: /etc/mongodb-keyfile
重启所有节点的MongoDB服务:
sudo systemctl restart mongod
使用scp将node1的密钥文件复制到node2和node3:
scp /etc/mongodb-keyfile username@node2_ip:/etc/mongodb-keyfile
scp /etc/mongodb-keyfile username@node3_ip:/etc/mongodb-keyfile
若之前已初始化副本集,需先删除数据目录(/var/lib/mongodb),再重新执行初始化步骤。
若需要更高的数据量和性能,可将副本集扩展为分片集群(包含Config Server、Shard Server、Mongos Router)。以下是简要步骤:
sh.addShard()添加分片。sh.enableSharding()和sh.shardCollection()。详细步骤可参考MongoDB官方文档或之前的分片配置指南。
bindIp设置为节点实际IP,而非0.0.0.0,并通过防火墙限制访问。mongodump工具),并测试恢复流程。mongostat、mongotop或第三方工具如Prometheus+Granafa)。