Diese super Anleitung habe ich in einem Forum gefunden und ich möchte nicht das sie wieder verloren geht. Daher habe ich die Anleitung hier rein kopiert und etwas angepasst.
Der Originalbeitrag ist unter http://www.homepage-community.de/mysql_master_slave_replikation-t57.0.html zu finden.
Diese Anleitung beschreibt wie man einen MySQL-Server permanent dupliziert. D.h. es gibt einen Rootserver der als Masterserver arbeitet und einen Slave der als Backup dient. Bei mir sind das ein 1und1 Rootserver (Master) und ein lokaler Debianserver, (Slave) der bei mir zu Hause steht.
MySQL Replikation als Master / Slave Lösung um Lese und Schreibzugriffe auf verschiedene Server zu verteilen oder aber um ein 1:1 Live Backup seiner MySQL Datenbank vorzuhalten das im Fehlerfall als aktuelles Backup dient.Die Master Save Replikation ist unter MySQL sehr einfach zu realisieren und lässt sich auch auf einem bereits laufenden Datenbankserver Problemlos umsetzen.
1. Einen Slave User mit Replikationsrechten auf dem Master anlegen
Hierzu loggen wir uns über die Shell auf die MySQL Konsole ein und führen folgendes Kommando aus:
2. my.cnf auf dem Master anpassen
wir bearbeiten mit unserem Texteditor der Wahl die Datei /etc/mysql/my.cnf und setzen folgende Werte:
log_bin = /var/log/mysql/mysql-bin.log
#bind-address = 127.0.0.1
Das ganze gefolgt von einem:
Hier haben wir dem Master mitgeteilt das er alle SQL Anfragen Binär loggen soll.
3. Vorbereitung – Datenbanken kopieren
Wir loggen uns wieder auf der MySQL Konsole ein und sperren alle Schreibzugriffe auf die Datenbank mit folgendem Kommando:
Nun ist es von besonderer Wichtigkeit, das wir uns die aktuelle Postion und das aktuelle Logfile vom Master notieren:
4. Datenbanken kopieren
Eine weitere Shell öffnen und den unteren Befehl ausführen. Bitte die offene Shell mit dem LOCK nicht schließen.
5. Die Tabellen auf dem Master wieder freigeben
6. Die aktuellen Datenbanken vom Master auf den Slave kopieren
Zum Slave wechseln, die Datenbank kopieren und anschließend einspielen.
gunzip < /tmp/backup.mysql.sql.tgz | mysql –user=root –pass=<PASSWORT> –host=localhost
7. Die my.cnf auf dem Slave anpassen
joe /etc/mysql/my.cnf
#log_bin = /var/log/mysql/mysql-bin.log
#expire_logs_days = 10
#max_binlog_size = 100M
slave-skip-errors = 1062
Der rote Parameter muß neu eingefügt werden. Er behebt Fehler, die bei einem bereits bestehenden Datensatz entstehen.
Eine typische Fehlermeldung zu dem Thema lautet
error 'Duplicate entry '272547452258258' for key .......' on query ' INSERT INTO .........
8. Den MySQL Slave neustarten
Wenn hier eine Fehlermeldung bezüglich des Users debian-sys-maint kommen sollte, dann die letzten beiden Punkte dieses Artikels durchgehen.
9. Dem Slave mitteilen wer der Master ist und die Replikation anfahren
Auf dem Slave die MySSQL Konsole starten und folgende Kommando absetzen:
START SLAVE;
Und das wars auch schon, wenn alles funktioniert hat, werden nun alle Anweisung die auf dem Master gemacht werden, auch auf dem SLAVE ausgeführt, so das wir jederzeit eine 1:1 Kopie der MySQL Datenbanken vom Master vorliegen haben. Nicht vergessen den Firewallport 3306 eingehend freizuschalten.
Wenn jetzt der Backupserver eingeschaltet wird, holt er sich alle Änderungen seit der letzten Synchronisation.