搭建MongoDB分片集群在CentOS上涉及多个步骤,包括配置服务器、配置分片、配置副本集等。以下是一个基本的指南:
确保你已经安装了MongoDB,并且每个节点上都安装了相同版本的MongoDB。
每个节点都需要配置为MongoDB实例。编辑每个节点的/etc/mongod.conf
文件。
storage:
dbPath: /var/lib/mongo
journal:
enabled: true
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
net:
port: 27017
bindIp: 127.0.0.1,<节点IP>
sharding:
clusterRole: shardsvr
storage:
dbPath: /var/lib/mongo
journal:
enabled: true
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
net:
port: 27018
bindIp: 127.0.0.1,<节点IP>
storage:
dbPath: /var/lib/mongo
journal:
enabled: true
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
net:
port: 27019
bindIp: 127.0.0.1,<节点IP>
在每个节点上启动MongoDB实例。
sudo systemctl start mongod
sudo systemctl enable mongod
每个分片节点需要配置为副本集。假设我们有两个副本集,每个副本集有两个节点。
mongo --port 27017
rs.initiate(
{
_id: "shard1",
members: [
{ _id: 0, host: "node1:27017" },
{ _id: 1, host: "node2:27017" }
]
}
)
mongo --port 27018
rs.initiate(
{
_id: "shard2",
members: [
{ _id: 0, host: "node3:27018" },
{ _id: 1, host: "node4:27018" }
]
}
)
配置服务器存储集群的元数据。假设我们使用三个配置服务器。
mongod --configsvr --replSet configReplSet --dbpath /var/lib/mongo --port 27019 --bind_ip localhost,<节点IP>
mongod --configsvr --replSet configReplSet --dbpath /var/lib/mongo --port 27020 --bind_ip localhost,<节点IP>
mongod --configsvr --replSet configReplSet --dbpath /var/lib/mongo --port 27021 --bind_ip localhost,<节点IP>
初始化配置服务器副本集:
mongo --port 27019
rs.initiate(
{
_id: "configReplSet",
configsvr: true,
members: [
{ _id: 0, host: "config1:27019" },
{ _id: 1, host: "config2:27020" },
{ _id: 2, host: "config3:27021" }
]
}
)
mongos是MongoDB的分片路由器,负责将请求路由到正确的分片。
mongos --configdb configReplSet/config1:27019,config2:27020,config3:27021 --port 27017 --bind_ip localhost,<节点IP>
连接到mongos并添加分片。
mongo --port 27017
sh.addShard("shard1/node1:27017,node2:27017")
sh.addShard("shard2/node3:27018,node4:27018")
启用数据库和集合的分片。
sh.enableSharding("yourDatabase")
sh.shardCollection("yourDatabase.yourCollection", { "shardKey": 1 })
验证分片集群是否正常工作。
sh.status()
以上步骤提供了一个基本的MongoDB分片集群搭建指南。根据实际需求,可能需要进一步调整和优化配置。