Dez 22 2011

MySQL-Replikation: Master umziehen

Tag: Linux,MySQLRonald @ 22. Dezember 2011, 04:12

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.

Dein Kommentar