MongoDB的分片配置主要包括以下几个步骤:
在所有服务器上安装MongoDB,并确保它们可以相互通信。
配置服务器存储集群的元数据。至少需要三个配置服务器以实现高可用性。
mongod.conf
):sharding:
clusterRole: "configsvr"
storage:
dbPath: /var/lib/mongodb
journal:
enabled: true
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
mongod --configsvr --replSet <configReplSetName> --dbpath /var/lib/mongodb --port 27019
连接到其中一个配置服务器并初始化副本集。
mongo --port 27019
在mongo shell中执行:
rs.initiate(
{
_id: "<configReplSetName>",
configsvr: true,
members: [
{ _id : 0, host : "cfg1.example.com:27019" },
{ _id : 1, host : "cfg2.example.com:27019" },
{ _id : 2, host : "cfg3.example.com:27019" }
]
}
)
每个分片服务器也需要配置文件。
mongod.conf
):sharding:
clusterRole: "shardsvr"
storage:
dbPath: /var/lib/mongodb
journal:
enabled: true
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
mongod --shardsvr --replSet <shardReplSetName> --dbpath /var/lib/mongodb --port <shardPort>
连接到其中一个分片服务器并初始化副本集。
mongo --port <shardPort>
在mongo shell中执行:
rs.initiate(
{
_id: "<shardReplSetName>",
members: [
{ _id : 0, host : "shard1.example.com:<shardPort>" },
{ _id : 1, host : "shard2.example.com:<shardPort>" },
{ _id : 2, host : "shard3.example.com:<shardPort>" }
]
}
)
mongos
是MongoDB的分片路由器,负责将客户端请求路由到正确的分片。
mongos --configdb <configReplSetName>/cfg1.example.com:27019,cfg2.example.com:27019,cfg3.example.com:27019 --port 27017
连接到mongos
并添加分片。
mongo --port 27017
在mongo shell中执行:
sh.addShard("<shardReplSetName>/<shardHost>:<shardPort>")
连接到mongos
并启用数据库和集合的分片。
mongo --port 27017
在mongo shell中执行:
sh.enableSharding("<databaseName>")
sh.shardCollection("<databaseName>.<collectionName>", { <shardKey>: 1 })
验证分片配置是否正确。
sh.status()
通过以上步骤,你可以成功配置MongoDB的分片集群。