Ein MongoDB Sharded Cluster besteht aus folgenden Komponenten:
Weitere Informationen: MongoDB Manual – Deploy a Sharded Cluster
Nachfolgend ein Beispiel für die Einrichtung eines Sharded Clusters
mit zwei Shards, einem dreiknotigen
Konfigurationsserver-Replikationssatz und einem Router.
Seit MongoDB 3.6 müssen alle Shards als Replica Sets betrieben werden.
Für Testzwecke kann jedes Shard-Replica Set nur ein einziges Mitglied
haben, produktiv sollten es mindestens drei sein.
Drei Instanzen für den Konfigurationsserver:
mkdir -p /data/configdb1 /data/configdb2 /data/configdb3
mongod --configsvr --replSet configReplSet --bind_ip localhost --port 27020 --dbpath /data/configdb1
mongod --configsvr --replSet configReplSet --bind_ip localhost --port 27021 --dbpath /data/configdb2
mongod --configsvr --replSet configReplSet --bind_ip localhost --port 27022 --dbpath /data/configdb3Mit der ersten Instanz verbinden und den Replikationssatz initialisieren:
mongosh --port 27020rs.initiate({
_id: "configReplSet",
configsvr: true,
members: [
{ _id: 0, host: "localhost:27020" },
{ _id: 1, host: "localhost:27021" },
{ _id: 2, host: "localhost:27022" }
]
})Jeder Shard als Replica Set. Für Testzwecke je ein Mitglied:
Shard 1:
mkdir -p /data/shard1db
mongod --shardsvr --replSet shard1ReplSet --bind_ip localhost --port 27030 --dbpath /data/shard1dbInitialisieren:
mongosh --port 27030rs.initiate({
_id: "shard1ReplSet",
members: [{ _id: 0, host: "localhost:27030" }]
})Shard 2:
mkdir -p /data/shard2db
mongod --shardsvr --replSet shard2ReplSet --bind_ip localhost --port 27040 --dbpath /data/shard2dbInitialisieren:
mongosh --port 27040rs.initiate({
_id: "shard2ReplSet",
members: [{ _id: 0, host: "localhost:27040" }]
})Starten des Routers:
mongos --configdb configReplSet/localhost:27020,localhost:27021,localhost:27022 --bind_ip localhost --port 27050Verbindung zum Router:
mongosh --port 27050Shards zum Cluster hinzufügen:
sh.addShard("shard1ReplSet/localhost:27030")
sh.addShard("shard2ReplSet/localhost:27040")Cluster-Status prüfen:
sh.status()Sharding für eine Datenbank aktivieren:
sh.enableSharding("exampleDB")Shard-Key für eine Kollektion festlegen:
sh.shardCollection("exampleDB.exampleCollection", { shardKeyField: 1 })Sharding ist der Prozess der horizontalen Partitionierung von Daten in MongoDB, bei dem Daten über mehrere Server (Shards) verteilt werden. Dies ermöglicht die Skalierung großer Datenmengen und erhöht die Leistung durch parallele Verarbeitung.