MySQL-Replikation sorgt dafür, dass Änderungen an einer Hauptdatenbank (Master) automatisch auf eine oder mehrere Kopien (Slaves) übertragen werden. Dies nutzt man zur Ausfallsicherung, zur Verteilung von Lesezugriffen oder als zusätzliche Backup-Ebene. In diesem Artikel erfährst du, wie Replikation funktioniert, wie du sie Schritt für Schritt einrichtest und welche Fallstricke du vermeiden solltest.
Was ist MySQL-Replikation
Bei MySQL-Replikation sendet der Master-Server ein Protokoll aller Schreibvorgänge (das Binärprotokoll, Binary Log) an einen oder mehrere Slave-Server. Der Slave führt dieselben Aktionen lokal aus, wodurch die Daten synchron bleiben. Dies geschieht nahezu in Echtzeit, wobei es immer eine kleine Verzögerung zwischen Master und Slave gibt.
Replikation wird häufig verwendet für: ein aktuelles Backup auf einem anderen Server, die Verteilung der Leselast auf mehrere Server oder den Aufbau einer Failover-Umgebung. Beachte: Replikation ist kein Ersatz für eine vollwertige Backup-Strategie, da fehlerhafte oder schädliche Abfragen ebenfalls an den Slave weitergeleitet werden.
Vorbereitung auf dem Master
Bevor du Replikation einrichtest, musst du den Master-Server vorbereiten. Dazu aktivierst du das Binary Logging und erstellst ein separates Benutzerkonto, das der Slave zur Verbindung verwendet.
Öffne die MySQL-Konfigurationsdatei (meist my.cnf oder my.ini) und stelle sicher, dass die folgenden Einstellungen unter [mysqld] vorhanden sind:
log_bin = mysql-bin
server_id = 1
Starte den MySQL-Dienst nach der Anpassung der Konfiguration neu. Jeder Server in einem Replikations-Setup muss eine eindeutige server_id haben, gib dem Slave also z. B. server_id = 2.
Replikation Schritt für Schritt einrichten
Folge den untenstehenden Schritten, um eine funktionierende Master-Slave-Replikation einzurichten.
Erstelle einen Replikationsbenutzer
Melde dich beim Master an und erstelle einen Benutzer, der nur Replikationsrechte hat: CREATE USER 'replica'@'%' IDENTIFIED BY 'passwort'; GRANT REPLICATION SLAVE ON . TO 'replica'@'%';
Notiere den Masterstatus
Führe auf dem Master SHOW MASTER STATUS; aus und merke dir den Dateinamen und die Position. Diese Angaben benötigst du, um den Slave an der richtigen Stelle starten zu lassen.
Erstelle einen Export der Datenbank
Exportiere die vorhandenen Daten mit mysqldump, damit der Slave mit derselben Ausgangslage beginnt. Importiere diese Datei auf dem Slave-Server.
Verbinde den Slave mit dem Master
Führe auf dem Slave Folgendes aus, mit den Angaben aus Schritt 2: CHANGE MASTER TO MASTER_HOST='masterip', MASTER_USER='replica', MASTER_PASSWORD='passwort', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=12345;
Starte die Replikation
Führe START SLAVE; aus und prüfe anschließend mit SHOW SLAVE STATUSG, ob Slave_IO_Running und Slave_SQL_Running beide auf Yes stehen.
Verwaltung, Kontrolle und häufige Fehler
Überprüfe regelmäßig den Replikationsstatus mit SHOW SLAVE STATUSG. Achte besonders auf das Feld Seconds_Behind_Master, das angibt, wie groß die Verzögerung ist. Ein steigender Wert kann auf eine langsame Verbindung oder eine aufwendige Abfrage hindeuten, die den Slave verlangsamt.
Häufige Fehler sind: das Vergessen, eine eindeutige server_id einzustellen, Firewall-Regeln, die den Verkehr zwischen Master und Slave blockieren, und das nicht synchronisierte Starten der Position, wodurch dem Slave Daten fehlen. Prüfe außerdem, ob beide Server dieselbe MySQL-Version verwenden, um Kompatibilitätsprobleme zu vermeiden.
Möchtest du Replikation als Teil einer umfassenderen Migration nutzen, zum Beispiel beim Wechsel zu Tandata, ist es ratsam, zunächst auf einer Kopie der Umgebung zu testen, bevor du live gehst. So vermeidest du Datenverlust während des Übergangs.
Häufig gestellte Fragen
Kann ich mehrere Slaves mit einem Master verbinden?
Ja, ein Master kann Daten auf mehrere Slaves replizieren. Jeder Slave benötigt jedoch eine eigene eindeutige server_id und eine eigene Verbindung zum Master.
Ist Replikation dasselbe wie ein Backup?
Nein. Replikation kopiert Änderungen direkt weiter, sodass fehlerhafte Löschungen oder schädliche Abfragen ebenfalls an den Slave gesendet werden. Nutze Replikation als Ergänzung zu, nicht als Ersatz für tägliche Backups.
Was tue ich, wenn die Replikation ins Stocken gerät?
Überprüfe zunächst die Fehlermeldung mit SHOW SLAVE STATUS. Oft handelt es sich um eine widersprüchliche Abfrage. Du kannst diese überspringen oder die Replikation erneut von einem frischen Export des Masters synchronisieren.
Funktioniert Replikation auch zwischen Servern verschiedener Anbieter?
Ja, solange die Server sich über das Netzwerk erreichen können und die richtigen Ports geöffnet sind. Achte auf Firewall-Einstellungen und verwende bevorzugt eine gesicherte Verbindung.
Brauche ich Replikation bei einer kleinen Website?
Für die meisten kleinen Websites genügt normales Webhosting mit täglichen Backups. Replikation ist vor allem nützlich bei hoher Last, kritischer Verfügbarkeit oder der Verteilung von Lesezugriffen.
Fazit
MySQL-Replikation ist eine leistungsstarke Methode, um Datenbanken zwischen Servern zu synchronisieren, sofern du die Schritte sorgfältig befolgst: Binary Logging aktivieren, einen Replikationsbenutzer anlegen, die Startposition notieren und die Verbindung testen. Kombiniere dies immer mit regelmäßigen Backups für echte Sicherheit. Schau dir unser Webhosting oder unsere Wissensdatenbank für weitere technische Hintergrundinformationen an.