Select Page

MySQL Replikations-Integrität sicherstellen

by | Oct 18, 2011 | MySQL, Linux

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.

0 Comments

Submit a Comment

Your email address will not be published. Required fields are marked *

More posts on the topic MySQL | Linux

Kickstart your Laptop with Linux

Alle paar Jahre bekomme ich einen neuen Laptop bei Netways. Vor zwei Wochen war es wieder so weit und somit eine gute Gelegenheit mal wieder die Betriebssystem-Frage zu stellen. Die alte Frage also: "Welches Linux ist das Beste?". Also für mich ganz persönlich. Nicht...

Ansible – Testing roles with Molecule

Ansible is a widely used and a powerful open-source configuration and deployment management tool. It can be used for simple repetitive daily tasks or complex application deployments, therefore Ansible is able to cover mostly any situation. If used in complex or...

NETWAYS Support Collector Roadmap

Den Support Collector konnte ich bereits in meinem letzten Blogpost vorstellen. Für alle die den Beitrag verpasst haben, hier kurz umrissen was es ist: Bei dem Tool handelt es sich um einen von uns geschriebenen Datensammler, welche alle möglichen Support relevanten...