23 Architektur eines Sharded Clusters

Ein MongoDB Sharded Cluster besteht aus folgenden Komponenten:

Weitere Informationen: MongoDB Manual – Deploy a Sharded Cluster

23.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 jedoch mindestens drei sein.

23.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" }
  ]
})

23.3 Shards einrichten

Jeder Shard als Replica Set, hier im Testbetrieb mit nur einem Mitglied:

Shard 1 einrichten:

mkdir -p /data/shard1db
mongod --shardsvr --replSet shard1ReplSet --bind_ip localhost --port 27030 --dbpath /data/shard1db

Initialisierung:

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

Shard 2 einrichten:

mkdir -p /data/shard2db
mongod --shardsvr --replSet shard2ReplSet --bind_ip localhost --port 27040 --dbpath /data/shard2db

Initialisierung:

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

23.4 Router (mongos) einrichten

Router starten:

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

23.5 Komponenten verknüpfen

Mit dem Router verbinden:

mongosh --port 27050

Shards zum Cluster hinzufügen:

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

23.6 Überprüfung des Sharded Clusters

Status prüfen:

sh.status()

23.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 })

23.8 Referenzen