Wir gehen davon aus, wir hätten zwei identische Suse Linux Server, auf denen MySql läuft.
Es sind masterserver.firma.de und slaveserver.firma.de
Eigentlich sind aber beide master und slave gleichzeitig. Die Datenbank Inhalte beider Server sind jederzeit (JEDERZEIT) absolut identisch. Sobald auf einem der Server ein neuer Datenbank Eintrag gemacht wird, wird er sofort repliziert auf den jeweils anderen.
Wir gehen davon aus, dass auf beiden Servern in der /etc/my.cnf folgende Einträge drinstehen
masterserver.firma.de
log-bin
server-id = 1
master-host = 192.168.0.2
master-user = repl
master-password = GeHe!mReplik@ntP@sswort
log-slave-updates
slaveserver.firma.de
log-bin
server-id = 2
master-host = 192.168.0.1
master-user = repl
master-password = GeHe!mReplik@ntP@sswort
log-slave-updates
Wir gehen davon aus, dass auf beiden Servern ein mysql-User namens „repl“ angelegt ist, der das FILE Recht hat.
Die beiden Server sind übrigens mit per Crossoverkabel verbunden auf dem zweiten Netzwerkinterface und haben private IP-Adressen. Diese Verbindung dient nur zur Replikation der Datenbanken.
Folgende Anleitung hilft, die Replikation aufzusetzen bzw. eine defekte Replikation binnen 10 Minuten zu reparieren - also quasi noch vor der Mittagspause!
1. Auf beiden Servern mysql beenden
/etc/init.d/mysql Stop
2. Auf slaveserver.firma.de den Ordner /var/lib/mysql umbenennen mit
mv /var/lib/mysql /var/lib/mysql.original
3. binäres Loggen auf BEIDEN deaktivieren mit
vi /etc/my.cnf
in der my.cnf auf beiden Servern folgende Eintraege auskommentieren (# davorstellen)
log-bin (Zeile 47)
log-slave-updates (Zeile 56)
4. Auf Server masterserver.firma.de im Ordner /var/lib/mysql alles löschen, das mit „www-*“ beginnt (das sind die „alten“ bin-log-Dateien, die wir loswerden müssen) (ps. das "www-*" bezieht sich auf MEINE Server. Bei dir heissen sie so, wie der Server heisst, also "masterserver-*")
Ferner loeschen wir die Dateien „master.info“ sowie „relay-log.info“
cd /var/lib/mysql
rm www-*
rm master.info
rm relay-log.info
5. Jetzt auf masterserver.firma.de vom Ordner /var/lib/mysql ein „tgz“ Paket erstellen
cd /
tar czvf mysql.tgz /var/lib/mysql
6. Die Datei mysql.tgz kopieren von masterserver.firma.de nach slaveserver.firma.de mit
scp mysql.tgz root@slaveserver.firma.de:/
7. Auf slaveserver.firma.de das kopierte File extrahieren
cd /
tar xzvf mysql.tgz
Nun sind die Verzeichnisse /var/lib/mysql auf beiden Servern exakt gleich.
8. Auf beiden Servern den mysql Dienst starten und wieder stoppen
/etc/init.d/mysql start
/etc/init.d/mysql Stop
9. Auf beiden Servern binäres Loggen wieder aktivieren
vi /etc/my.cnf
Das Kommentarzeichen # wieder entfernen von den Einträgen
bin-log (Zeile 47)
log-slave-updates (Zeile 56)
10. Auf beiden Servern mysql Dienst wieder starten
/etc/init.d/mysql start
Nun sind beide MySql Datenbanken gleich und die Replikation müsste funktionieren.
mysql Logdatei kontrollieren
tail -100 /var/lib/mysql/mysqld.log
Keine Kommentare:
Kommentar veröffentlichen