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的分片集群。