DBAtlas · Atlas für Datenbankbetrieb

Rollierender Index-Build auf einem Replica Set (Mitglied für Mitglied)

MongoDBWartung

Befehl

// 1) Shut down a SECONDARY; comment out replication.replSetName and start it standalone on another port:
//    mongod --config /etc/mongod.conf --port 27217 --setParameter disableLogicalSessionCacheRefresh=true
// 2) Build the index on the standalone member:
db.getSiblingDB("shop").musteri.createIndex({ email: 1 }, { name: "idx_email" })
// 3) Restart with the normal configuration; wait until it is SECONDARY and lag has closed:
rs.printSecondaryReplicationInfo()
// 4) When all secondaries are done, step down the primary and apply steps 1-3 to the old primary:
rs.stepDown(120, 30)

Was es tut

Baut den Index auf jedem Mitglied separat, indem das Mitglied vorübergehend standalone außerhalb des Sets betrieben wird; der Primary trägt nie die Build-Last.

Wann einsetzen

Wenn die Auswirkung des standardmäßigen verteilten Builds auf den Primary und die Replikationsverzögerung bei einer sehr großen Collection nicht akzeptabel ist.

Vorsicht

Die Wartungszeit jedes Mitglieds muss kürzer als das Oplog-Fenster sein; sonst ist das Mitglied bei der Rückkehr too stale. Beim rollierenden Aufbau eines Unique Index die Schreibzugriffe auf die Collection für den gesamten Build stoppen; sonst können einige Mitglieder verletzende Dokumente enthalten. Starte das Standalone-Mitglied auf einem anderen Port, damit sich keine Anwendungen damit verbinden.

In DBAtlas öffnen →

Verwandte Einträge