22 Architektur eines Sharded Clusters

Ein MongoDB Sharded Cluster besteht aus folgenden Komponenten:

Weitere Informationen: MongoDB Manual – Deploy a Sharded Cluster


22.1 Einrichtung eines Sharded Clusters

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.


22.2 Konfigurationsserver einrichten

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/configdb3

Mit der ersten Instanz verbinden und den Replikationssatz initialisieren:

mongosh --port 27020
rs.initiate({
  _id: "configReplSet",
  configsvr: true,
  members: [
    { _id: 0, host: "localhost:27020" },
    { _id: 1, host: "localhost:27021" },
    { _id: 2, host: "localhost:27022" }
  ]
})

22.3 Shards einrichten

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/shard1db

Initialisieren:

mongosh --port 27030
rs.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/shard2db

Initialisieren:

mongosh --port 27040
rs.initiate({
  _id: "shard2ReplSet",
  members: [{ _id: 0, host: "localhost:27040" }]
})

22.4 Router (mongos) einrichten

Starten des Routers:

mongos --configdb configReplSet/localhost:27020,localhost:27021,localhost:27022 --bind_ip localhost --port 27050

22.5 Komponenten verknüpfen

Verbindung zum Router:

mongosh --port 27050

Shards zum Cluster hinzufügen:

sh.addShard("shard1ReplSet/localhost:27030")
sh.addShard("shard2ReplSet/localhost:27040")

22.6 Überprüfung des Sharded Clusters

Cluster-Status prüfen:

sh.status()

22.7 Daten im Cluster sharden

Sharding für eine Datenbank aktivieren:

sh.enableSharding("exampleDB")

Shard-Key für eine Kollektion festlegen:

sh.shardCollection("exampleDB.exampleCollection", { shardKeyField: 1 })

22.8 Referenzen

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.