Das Percona-Toolkit (Alias Maatkit) hatten wir ja schon einmal vorgestellt und heute möchten wir einen weiteren Aspekt der Tool-Sammlung hervorheben.
Denn wer kennt das nicht, eine Replikation unter MySQL mit Master-Slave oder Master-Master läuft über die Zeit hinweg stabil, doch nach und nach können sich Differenzen in den Daten einschleichen. Selbst wenn es nie einen Hinweis in der Replikation dafür gegeben hat. Dies kann durch Fehler jeder Art geschehen.
Genau dafür hat das Toolkit den ‘table-checksum‘ Befehl, der es einem ermöglicht, die Inhalte nach verschiedensten Algorithmen zu prüfen und mit Checksummen abzugleichen. Praktikabel lässt sich dies auch in Replikationen einbauen, welche durch die selbige die Befehle auch auf den Slaves zum exakt gleichen Stand ausführt.  Die Statemants dafür werden dann in einer gesonderten Tabelle und ggf. auch in einer eigenen Datenbank gespeichert und repliziert. Wenn Master und Slave die Abfragen durchgeführt haben ( Achtung, kann je nach Größe einige Zeit in Anspruch nehmen ), kann dann die Gegenprüfung beginnen. Ein schlichtes Beispiel Setup mit eigenem User würde wie folgt aussehen.
Erstellen der Checksummen:

pt-table-checksum --quiet --defaults-file PFAD --replicate DB.TABLE \
 --empty-replicate-table --create-replicate-table MASTER

Gegenprüfen der Summen:

pt-table-checksum --defaults-file PFAD --replicate DB.TABLE --replicate-check 1 MASTER

Sollte sich dann eine Differenz in den Daten aufzeigen, kann man dies über viele Wege wieder korrigieren, aber auch hierfür gibt es einen Befehl, dieser nennt sich ‘table-sync‘. Da es aber je nach Setup der Replikation und der Tabellen verschiedene Vorgehen gibt, wird hier nur kurz ein allgemeines Schema als Beispiel gezeigt, ausgehend von einer Master Slave Replikation, wobei der Master die korrekten Daten beinhaltet:

pt-table-sync --defaults-file PFAD --execute --replicate DB.TABLE MASTER

Alternativ würde auf folgendes gehen, wobei hier noch einmal alle Daten abgeglichen werden:

pt-table-sync --defaults-file PFAD --execute --sync-to-master SLAVE

Da die Überwachung der Inhalte mit ‘table-checksum’ automatisiert und die Return Codes ausgelesen werden können, eignet sich das ganze auch für ein Monitoring der Situation. Dies kann dann z.B. einmal in der Woche die Inhalte prüfen, je nach Größe der Daten.