MySQL-Replikation: Master umziehen

Heute habe ich mal einen MySQL-Master-Server umgezogen und will hier festhalten, dass das gar kein Hexenwerk sein muss. Ich hoffe, dass ich alle Schritte zusammenkriege. Die Serverkonstellation sei wie gefolgt:

  • Alter Master
  • Neuer Master
  • Slave

Alle Systeme laufen mit Debian Squeeze.

Schritt 1:

## Neuer Master - MySQL frisch installiert
# MySQL-Server herunterfahren
/etc/init.d/mysql stop
# Sichern der unberührten MySQL Rohdaten
tar -czvf /tmp/mysql_vanilla.tar.gz /var/lib/mysql
# Löschen des Verzeichnisses
rm -R /var/lib/mysql
# Ändern des Passwort für den Debian-eigenen User "debian-sys-maint" - Passwort aus der gleichen Datei des _alten_ Master-Servers übernehmen
vi /etc/mysql/debian.cnf
# Nach belieben kann die Konfigurarion /etc/mysql/my.cnf des alten Master-Servers übernommen werden, hierbei muss dann aber u.U. die IP-Adresse des "bind-address"-Eintrags auf die IP-Adresse des neuen Masters geändert werden.

Schritt 2:

## Slave-Server
# MySQL-Server herunterfahren
/etc/init.d/mysql stop
# Ändern der IP-Adresse/des Hostnamens des Masterservers in den folgenden Dateien
vi /etc/mysql/my.cnf
vi /var/lib/mysql/master.info

Schritt 3:

## Alter Master-Server
# MySQL-Server herunterfahren
/etc/init.d/mysql stop
# Komplettes MySQL-Verzeichnis mit Roh-Daten einpacken
tar -czvf /tmp/mysql_master.tar.gz /var/lib/mysql
# Transfer auf neuen Master
scp /tmp/mysql_master.tar.gz user@neuer-master.example.org:/tmp/

Schritt 4:

## Neuer Master
# MySQL-Rohdaten vom alten Master-Server entpacken
tar -xzvf /tmp/mysql_master.tar.gz /var/lib/
# !! Kontrollieren, ob Dateirechte (chmod) und User-/Gruppen-Einstellungen (chown) richtig gesetzt sind und ggf. auf "mysql" ändern
# MySQL-Server starten
/etc/init.d/mysql start
# MySQL-Rechtetabelle "users" und "db" auf alten Hostnamen prüfen und durch neuen ersetzen - FLUSH PRIVILEGES nicht vergessen

Schritt 5:

## Slave
# MySQL-Server starten
/etc/init.d/mysql start
# !! Slave-Status in MySQL überprüfen - sollte aber von alleine auf den neuen Server verbinden, da in Schritt 2 die neue IP-Adresse/der neue Hostname eingegeben wurde

Alternativ kann man natürlich anstatt des Kopierens der Roh-Daten auch mit mysqldump einen Vollexport durchführen und diesen Dump dann auf dem neuen Master einspielen. Über Vorteile dieser Variante bin ich mir nicht sicher, das Einpacken der Rohdateien des ausgeschalteten MySQL-Servers erscheint mir auch unter Berücksichtigung der InnoDB-Besonderheiten als absolut gangbarer Weg – bei mir hat alles problemlos geklappt. Wer auf Nummer sicher gehen will macht die mysqldump-Variante und muss dementsprechend mehr Zeit mitbringen.

War dieser Artikel hilfreich für Sie?
[Gesamt: 0 Durchschnitt: 0]

One thought on “MySQL-Replikation: Master umziehen

  1. Gero Bressel sagt:

    Hehe, das ist ja einfach…

    hier eine grobe Anleitung wie man bei kaputtem Master (man kann keinen Dump mehr machen) aus zwei Slaves wieder einen Master und einen Slave macht:

    – mit mysqlbinlog sich bei beiden Slaves die letzten SQL-Befehle ansehen und die entsprechende Position beim zukünftigen Master notieren, die beide erfüllen (Achtung, der zukünftige Master sollte dann natürlich die gleiche oder eine spätere Position haben).
    – auf dem neuen „Slave“ dann ein CHANGE MASTER TO mit den entsprechenden Parametern und der Binlog-Position des Masters machen.
    – START SLAVE; und viel Glück!

    Daher macht es Sinn auch auf den Slaves ein Binlog zu führen!

    Natürlich muss auch hier der Replikations-Benutzer auf dem neuen Master mit entsprechenden Berechtigungen existieren.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *