Testen der MySQL-Datenbankreplikation/-synchronisierung

Testen der MySQL-Datenbankreplikation/-synchronisierung

Ich richte eine MySQL-Masterdatenbank ein, die auf einige Slavedatenbanken repliziert wird.

Meine Frage lautet: Was sind die Best Practices zum Überwachen und/oder Testen der Aktualität der Slave-Datenbanken und zum Benachrichtigen eines Administrators, wenn ein Fehler auftritt, der zum Stoppen der Replikation führt?

Ich habe nach Überwachungstools gesucht, konnte aber nichts Passendes finden.

Und was sind die „Best Practices“ zum Testen der Synchronisierung zwischen den Slaves? Gibt es so etwas wie Unit-Tests für die Datenbankreplikation?

Ich entschuldige mich, wenn meine Unwissenheit in dieser Angelegenheit jemanden beleidigt.

Antwort1

Das große Problem bei der Replikation ist die Überprüfung

  1. dass alle Knoten aktiv sind,
  2. alle Knoten kommunizieren (kein Split Brain)
  3. und Verarbeiten von Replikationsprotokollen
  4. und die Replikationsverzögerung

1, 3 und 4 können mit SHOW MASTER STATUS / SHOW SLAVE STATUS auf den entsprechenden Knoten erfasst werden, obwohl die Replikationsverzögerung nur eine Genauigkeit von 1 Sekunde hat und nur über jeden Hop hinweg. Das Percona-Toolkit enthält Skripte zum Erzielen genauerer Replikationsverzögerungen.

Durch die Verwendung von Multi-Master-Replikation (z. B.Wolfram,Percona) erspart viel Ärger, erfordert aber zusätzlichen Aufwand / zusätzliche Software für die Einrichtung.

Wenn das Netzwerk zwischen den Knoten ausfällt, können zwar alle Prozesse einwandfrei ausgeführt werden, es können jedoch keine Daten übertragen werden. Sie müssen jeden Knoten überwachen, um zu prüfen, ob er eine Verbindung zum Upstream-Knoten herstellen kann.

eine MySQL Master-Datenbank, die auf einige Slave-Datenbanken repliziert

Die beste Vorgehensweise wäre, einen der Slaves auch als Master zu bestimmen – bidirektionale Replikation. Auf diese Weise können Sie im Falle eines Ausfalls oder für Wartungsaufgaben wie den Neuaufbau von Indizes, Backups und Schemaänderungen problemlos umschalten.

Abhängig von der Anzahl der Slave-Knoten möchten Sie möglicherweise auch einenFanout-Knotenum die Änderungen zu verbreiten.

Für die Verwaltung von Eskalationen und die Planung von Skripten zur Datenerfassung usw. stehen zahlreiche Tools zur Verfügung. Ich verwende Nagios, und viele andere Leute auch.

Antwort2

Meine Frage ist, was sind die besten Praktiken, um zu überwachen und / oder zu testen, dass die Slave-Datenbanken auf dem neuesten Stand sind,

Für einen einfachen Test fügen Sie Daten auf dem Master ein/aktualisieren sie und stellen Sie sicher, dass sie auf die Slaves repliziert werden.

Aber für die Konsistenzprüfung,pt-Tabellenprüfsummeist, wonach Sie suchen.

Zum Beispiel:

pt-table-checksum localhost --empty-replicate-table --databases db --nocheck-replication-filters --replicate percona.checksums > /var/log/pt-table-checksum.log 2>&1

und das würde einen Administrator benachrichtigen, wenn ein Fehler auftritt, der dazu führt, dass die Replikation gestoppt wird.

Wenn Sie Nagios verwenden,mysql_health überprüfenPlugin kann helfen, den Slave-Status zu überwachen (läuft oder nicht). Um die Konsistenz zu überwachen, werfen Sie einen Blick aufpmp-check-pt-Tabelle-PrüfsummePlugin.

Verpassen Sie nicht diept-Tabelle-Synchronisationbei Unstimmigkeiten:

pt-table-sync -v --print --sync-to-master h=localhost,D=db,t=table
pt-table-sync -v --execute --sync-to-master h=localhost,D=db,t=table

Bedenken Sie, dass Sie diese --printOption wahrscheinlich zuerst nutzen sollten.

Antwort3

auf Sklaven tun

SHOW SLAVE STATUS\G;

Wenn Sie Folgendes erhalten:

   Slave_IO_Running: Yes
  Slave_SQL_Running: Yes

das heißt, Sie sind fast am Ziel. Um es zu testen, versuchen Sie, alle Schreibtransaktionen auf MASTER durchzuführen und stellen Sie sicher, dass diese automatisch auf Slave repliziert werden

Antwort4

Ich habe nach Überwachungstools gesucht, konnte aber nichts Passendes finden.

Du kannst den ... benutzenPercona MySQL Monitoring-Vorlage[n] für Cacti. Sehen Sie sich die MySQL-Replikationsvorlage an (die das pt-heartbeatTool verwendet).

Prost

verwandte Informationen