MySQL Replikations-Integrität sicherstellen

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.

Weekly snap: Introducing Maatkit, Growl and Martin

weekly snapJuly 13-17 was a week of introductions. From personal to serial, new and nifty – Systems Engineering, MySQL, Nagios and Macs were all in there.
Michael introduced us to his new find: Maatkit, a collection of handy tools to make working with MySQL easier and safer. From replication monitoring for installations of all sizes to database dumps with multiple tables in parallel, Maatkit was Michael’s tip for all busy MySQL buffs.
Stepping into the spotlight, Martin S shared a little on his life as our Systems Engineer- running between internal systems duties and servicing the managed services at our data center.
Reliably there, Julian kicked off a new blog series on Nagios Notifications – to get alerts faster, through better channels and improve in accuracy. He started with Growl for Macs, running through a quick installation and configuration how-to. Next week, he’ll unveil the fastest and simplest way to send SMS alerts. Hang in there!