MySQL: Master-Slave einrichten (konfigurieren)


By admin - Posted on 23 March 2010

Falls der MySQL-Server einmal ausfällt ist das Gejammer groß. Daher sollte man einen Mirror aufsetzen und für den Notfall hat man ein Ersatz-System.

Die folgende Schritte sollen zeigen wie man eine Replikation aufsetzt. Hier Master-Slave.

Mein Aufbau:

2 Rechner mit openSUSE 11.1 und MySQL 5.0.67.

Vorraussetzungen:

Auf Master und Slave läuft der MySQL-Server und beide System sind für Ihre Aufgaben eingerichtet. Stichwort: Server-id und binäres Loggen.

Master

2 Shells öffnen

In Shell 1 wird mysql gestartet.
Die Shell muss offen bleiben.

mysql -u root -p

mysql> FLUSH TABLES WITH READ LOCK;

mysql> SHOW MASTER STATUS;

Beispiel:

mysql> Show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 |       98 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

In Shell 2 nun den Dump erstellen

mysqldump -u root -p --all-databases --lock-all-tables > /home/tmp/dbdump.db

Alternativ kann auch das hier verwendet werden:

mysqldump -u root -p --all-databases --master-data > /home/tmp/dbdump.db

Hier werden die Infos zu Change-Master gleich mit eingetragen (Infos).

Auf Shell 1 die Tabellen wieder freigeben:

mysql> UNLOCK TABLES;

Den dump auf den Slave übertragen

scp /home/tmp/dbdump.db 192.168.0.4:/home/tmp/

Slave

2 Shells öffnen

In Shell 1 wird mysql gestartet.
Die Shell muss offen bleiben.

Den Slave stoppen

mysql> STOP SLAVE;

In Shell 2 nun den Dump importieren

shell> mysql -u root -p < /home/tmp/dbdump.db

In Shell 1 den Slave anweisen

CHANGE MASTER TO
MASTER_HOST='192.168.0.7',
MASTER_USER='repl',
MASTER_PASSWORD='repl',
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=98;

und starten

mysql> START SLAVE;

Doku

Bei nützlichen Hinweisen erweitere ich dies hier gerne.