Linux下MongoDB集群配置与管理
一、架构与规划
二、环境准备与目录规范
sudo yum install -y mongodb-orgsudo apt update && sudo apt install -y mongodb-orgopenssl rand -base64 756 > /etc/mongo/keyfile三、部署副本集(Shard与Config通用)
sudo systemctl start mongod(或 mongod -f /etc/mongo/mongod.conf)rs.initiate({
_id: "rs0",
members: [
{ _id: 0, host: "10.0.0.11:27001" },
{ _id: 1, host: "10.0.0.12:27001" },
{ _id: 2, host: "10.0.0.13:27001" }
]
})
rs.initiate({
_id: "cfgReplSet",
configsvr: true,
members: [
{ _id: 0, host: "10.0.0.11:21000" },
{ _id: 1, host: "10.0.0.12:21000" },
{ _id: 2, host: "10.0.0.13:21000" }
]
})
rs.status()、rs.isMaster() 检查 PRIMARY/SECONDARY/ARBITER 角色与健康。四、部署mongos与分片集群
mongos -f /etc/mongo/mongos.conf(建议多机部署)sh.addShard("rs0/10.0.0.11:27001,10.0.0.12:27001,10.0.0.13:27001")
sh.addShard("rs1/10.0.0.11:27002,10.0.0.12:27002,10.0.0.13:27002")
sh.addShard("rs2/10.0.0.11:27003,10.0.0.12:27003,10.0.0.13:27003")
sh.enableSharding("mydb")
sh.shardCollection("mydb.users", { "user_id": 1 })
sh.status() 查看分片与分布;sh.status("configsvr") 查看配置服务器状态。五、安全加固与日常运维
use admin
db.createUser({ user: "admin", pwd: "<pwd>", roles: ["root"] })
sh.addShard("rsX/...");迁移块 sh.moveChunk();均衡器 sh.setBalancerState(true/false)、sh.getBalancerState()。rs.freeze();新增/移除成员 rs.add()/rs.remove();变更优先级/投票权 rs.reconfig()。