Replikation mit MySQL 5.x

Master – Slave Replikation:

Szenario:

Replikation aller Datenbanken eines Server zu Backupzwecken auf einen weiteren Server. Achtung: Dies kann auch erreicht werden, indem wir eine zusätzliche Instanz auf unseren vorhanden Server einrichten. Zunächst müssen wir sicherstellen, dass in der my.cnf folgende Einträge wie folgt vorhanden sind:

Danach starten wir MySQL auf dem Server neu:

Überprüfe dann mit

ob MySQL wirklich auf allen Interfaces hört:

Auf dem Master Server richten wir anschliessend den Benutzer für die Replikation ein:

Führe in der MySQL Kommandozeile folgende Befehle aus:

Das weitere Vorgehen ist davon abhängig ob wir schon Daten in der Datenbank haben, oder ob wir die Datenbank erst jungfräulich aufgesetzt haben.

Wenn Master und Slave sozusagen frisch aufgesetzt sind, noch keine Daten existieren, notieren wir auf dem Master Binlog und Binlogposition weg.

Auf dem Slave passen wir die my.cnf wie folgt an:

Danach starten wir MySQL auf dem Server neu:

und richten die Replikation ein hier werden die Werte von dem Masterserver verwendet

Den Status der Replikation überprüfen wir mit:

Wichtig: Slave_IO_Running und Slave_SQL_Running müssen auf Yes stehen. Anderen Falles stimmen z.B. die Userberechtigungen des Replikationsusers nicht, das Passwort ist nicht oder nicht richtig eingetragen, oder  die MySQL Instanz kann sich nicht zum Master verbinden(Port, Ip usw.). Wie solche DInge repariert werden folgt an anderer Stelle.

Wenn der Master schon Daten enthält müssen wir anders vorgehen. Hierzu gibt es mehrere Varianten – die von mir vorgestellte benutze ich fast wöchentlich um Replikationen neu Aufzusetzen. Wenn wir den Master und den Slave vorbereitet haben, ziehen wir uns ein Backup mit mysqldump auf dem Masterserver.

Achtung je nachdem welche Engines ihr benutzt und wie diese verwendet werden, kann es zu Problemen führen. Die INNODB – Variante berücksichtigt, dass nur in Innodbtabellen geschrieben wird und somit können wir im Livebetrieb ein konsistentes Backup für eine Replikation ziehen. Wenn Ihr auch MyISAM Tabellen im Einsatz habt und in diese auch geschrieben wird, muss die Datenbank erst gelocked werden, siehe weiter unten.

INNODB

MyISAM

Damit haben wir den Master gelocked, sprich es können keine Daten in die Datenbank geschrieben werden.

Nachdem wir nun den Dump auf den Slave kopiert haben spielen wir ihn in die Datenbank ein:

INNODB

MyISAM

Hier benutzen wir die Angaben aus dem SHOW MASTER Befehl des gelockten Masters.

Wenn wir überprüft haben, dass die Replikation läuft (SHOW SLAVE STATUS;) müssen wir in der MyISAM – Variante nur noch die Datenbanken auf dem Master wieder freigeben: