Datenbankreplikation · 3 min read · Dec 22, 2025

Wie man die Datenbankreplikation in MySQL einrichtet

Dies ist ein “Copy & Paste” HowTo!

Der einfachste Weg, dieses Tutorial zu befolgen, ist die Verwendung eines Befehlszeilenclients/SSH-Clients (wie

PuTTY

für Windows) und einfach die Befehle zu kopieren und einzufügen (außer dort, wo Sie eigene Informationen wie IP-Adressen, Hostnamen, Passwörter,… angeben müssen). Dies hilft, Tippfehler zu vermeiden.

Wie man die Datenbankreplikation in MySQL einrichtet

Version 1.1
Autor: Falko Timme
Zuletzt bearbeitet: 14.01.2006

Dieses Tutorial beschreibt, wie man die Datenbankreplikation in MySQL einrichtet. Die MySQL-Replikation ermöglicht es Ihnen, eine exakte Kopie einer Datenbank von einem Master-Server auf einem anderen Server (Slave) zu haben, und alle Updates der Datenbank auf dem Master-Server werden sofort auf die Datenbank auf dem Slave-Server repliziert, sodass beide Datenbanken synchron sind. Dies ist keine Backup-Strategie, da ein versehentlich ausgeführter DELETE-Befehl auch auf dem Slave ausgeführt wird; aber die Replikation kann helfen, gegen Hardwarefehler zu schützen.

In diesem Tutorial werde ich zeigen, wie man die Datenbank exampledb vom Master mit der IP-Adresse 192.168.0.100 auf einen Slave repliziert. Beide Systeme (Master und Slave) laufen auf Debian Sarge; jedoch sollte die Konfiguration auf fast alle Distributionen mit wenig oder keiner Modifikation anwendbar sein.

Beide Systeme haben MySQL installiert, und die Datenbank exampledb mit Tabellen und Daten existiert bereits auf dem Master, jedoch nicht auf dem Slave.

Ich möchte zuerst sagen, dass dies nicht der einzige Weg ist, ein solches System einzurichten. Es gibt viele Möglichkeiten, dieses Ziel zu erreichen, aber dies ist der Weg, den ich wähle. Ich gebe keine Garantie, dass dies für Sie funktionieren wird!

1 Konfigurieren Sie den Master

Zuerst müssen wir /etc/mysql/my.cnf bearbeiten. Wir müssen das Networking für MySQL aktivieren, und MySQL sollte auf allen IP-Adressen hören, daher kommentieren wir diese Zeilen aus (sofern vorhanden):

| #skip-networking #bind-address = 127.0.0.1 |

Darüber hinaus müssen wir MySQL mitteilen, für welche Datenbank es Protokolle schreiben soll (diese Protokolle werden vom Slave verwendet, um zu sehen, was sich auf dem Master geändert hat), welche Protokolldatei es verwenden soll, und wir müssen angeben, dass dieser MySQL-Server der Master ist. Wir möchten die Datenbank exampledb replizieren, also fügen wir die folgenden Zeilen in /etc/mysql/my.cnf ein:

| log-bin = /var/log/mysql/mysql-bin.log binlog-do-db=exampledb server-id=1 |

Dann starten wir MySQL neu:

/etc/init.d/mysql restart

Dann loggen wir uns als root in die MySQL-Datenbank ein und erstellen einen Benutzer mit Replikationsrechten:

mysql -u root -p
Passwort eingeben:

Jetzt sind wir in der MySQL-Shell.

GRANT REPLICATION SLAVE ON . TO ‘slave_user’@’%’ IDENTIFIED BY ‘’; (Ersetzen Sie durch ein echtes Passwort!)
FLUSH PRIVILEGES;

Als nächstes (immer noch in der MySQL-Shell) tun Sie dies:

USE exampledb;
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;

Der letzte Befehl zeigt etwas wie dies:

| +---------------+----------+--------------+------------------+ | Datei | Position | Binlog_do_db | Binlog_ignore_db | +---------------+----------+--------------+------------------+ | mysql-bin.006 | 183 | exampledb | | +---------------+----------+--------------+------------------+ 1 Zeile in der Menge (0.00 sec) |

Notieren Sie sich diese Informationen, wir werden sie später auf dem Slave benötigen!

Dann verlassen Sie die MySQL-Shell:

quit;


Es gibt zwei Möglichkeiten, die vorhandenen Tabellen und Daten von exampledb vom Master auf den Slave zu übertragen. Die erste Möglichkeit besteht darin, ein Datenbank-Dump zu erstellen, die zweite Möglichkeit besteht darin, den Befehl LOAD DATA FROM MASTER; auf dem Slave zu verwenden. Letzteres hat den Nachteil, dass die Datenbank auf dem Master während dieses Vorgangs gesperrt wird, sodass, wenn Sie eine große Datenbank auf einem stark frequentierten Produktionssystem haben, dies nicht das ist, was Sie möchten, und ich empfehle, in diesem Fall die erste Methode zu befolgen. Die letztere Methode ist jedoch sehr schnell, daher werde ich beide hier beschreiben.

Wenn Sie die erste Methode befolgen möchten, tun Sie dies:

mysqldump -u root -p –opt exampledb > exampledb.sql (Ersetzen Sie durch das echte Passwort für den MySQL-Benutzer root! Wichtig: Es gibt keinen Leerraum zwischen -p und !)

Dies erstellt einen SQL-Dump von exampledb in der Datei exampledb.sql. Übertragen Sie diese Datei auf Ihren Slave-Server!

Wenn Sie den Weg LOAD DATA FROM MASTER; gehen möchten, dann müssen Sie jetzt nichts tun.


Schließlich müssen wir die Tabellen in exampledb entsperren:

mysql -u root -p
Passwort eingeben:
UNLOCK TABLES;
quit;

Jetzt ist die Konfiguration auf dem Master abgeschlossen. Weiter zum Slave…

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.