Rebuild Slave-DB & Replication
Da der Befehl mysqldump die Tables locked, ist es nicht notwendig, dass auf der Master Datenbank kein Traffic ist. Durch --master-data wird im Befehl mysqldump die richtige Position zum Einsetzen der Replication auf dem Slave Server hinterlegt.
- Auf Slave-Server anmelden
Anmeldung in MySQL mit Credentials USER und PWD, danach Slave stoppen und MySQL wieder verlassen. Dafür folgende Befehle nutzen:
mysql -uUSER -pPWD
STOP SLAVE;
QUIT;
- Einen MySQL-Dump schreiben. Auf dem Master-Server nun folgenden Schritte durchführen. Dazu ein Backup-Verzeichnis anlegen und in selbiges wechseln. Der MySQL-Dumb wird nun mit dem folgenden Befehl ausgeführt:
mysqldump -uUSER -pPWD --single-transaction --master-data=2 --databases JTELWeb JTELStats JTELLog --add-drop-database --add-drop-table --events --routines > filename.sql
Hierzu eine kurze Erklärung:
- <Name LogFile> und <Position LogFile> werden durch --master-data im Dump gespeichert.
- nur die JTEL-Datenbanken verwenden '--databases'
- alle Datenbanken vor Import löschen '--add-drop-database'
- alle Tabelle der Datenbanken vor Import löschen '--add-drop-table'
- alle Routinen und Prozeduren im Dump implementieren '--events --routines'
- Zusätzlich kann noch der Parameter --default_character_set utf8 verwendet werden
- MySQL-Dump vom Master Datenbankserver auf den Slave Datenbank Server kopieren.
Verwende hierfür das Tool deiner Wahl: Kommandozeile (scp), WinSCP, ... - ENTWEDER a ODER b! BESSER IST a! Wir wechseln wieder auf den Slave-Server und importieren nun den mysqldump.
- Dafür verwenden wir die folgenden Befehle
mysql -uUSER -pPWD (Nun sind wir in MySQL)
drop database JTELLog;
drop database JTELStats;
drop database JTELWeb;
source <filename>
- Dafür verwenden wir die folgenden Befehle
mysql -uUSER -pPWD < filename.sql
- Dafür verwenden wir die folgenden Befehle
- Als nächstes wieder Anmeldung auf dem Slave-Server in mysql, danach wird ein Slave Reset durchgeführt, der Startpunkt für die Replikation auf den vorhin notierten Wert gesetzt und anschließend der Slave wieder gestartet. Dazu folgende Befehle:
mysql -uUSER -pPWD
RESET SLAVE;
CHANGE MASTER TO MASTER_LOG_FILE='<Name LogFile>', MASTER_LOG_POS=<Position LogFile>; (Dieser Befehl ist vollständig im mysqldump enthalten. Bestenfalls einfach dort kopieren!)
START SLAVE;
SHOW SLAVE STATUS \G;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
- Aufräumen von Datenmüll nicht vergessen! D.h. mysqldumps und Verzeichnisse zumindest auf dem Slave wieder löschen. Auf der Master Datenbank kann ein Backup bleiben, sofern genügend Platz vorhanden ist.