...
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;
RESET SLAVE;
QUIT;
MySQL Server mit
servcie mysqld restart
neu starten.
- Anmeldung in MySQL mit Credentials USER und PWD, danach Slave stoppen und MySQL wieder verlassen. Dafür folgende Befehle nutzen:
- 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.
mysql
-uUSER
-pPWD
(Nun
sind
wir
in
MySQL)
drop
database
JTELLog;
drop
database
JTELStats;
drop
database
JTELWeb;
source
- Dafür verwenden wir die folgenden Befehle
mysql -uUSER -pPWD < filename.sql
<filename>
- Wir ermitteln nun die Replikationsparameter, da wir sie gleich benötigen werden:
- In der mysqldump Datei ganz am Anfang finden wir im Kommentarblock eine Zeile, die folgendermaßen aussieht:
CHANGE MASTER TO MASTER_LOG_FILE='binlog.000872', MASTER_LOG_POS=11940974;
Die ParameterMASTER_LOG_FILE
undMASTER_LOG_POS
muss man sich merken. - Wir brauchen den Namen oder die IP vom Master DB Server
- Wir brauchen das Passwort des Benutzers
repl
auf dem Master DB Server. Dies entspricht eigentlich immer dem Passwort des Benutzers root - man kann es am einfachsten ausprobieren, in dem man sich vom Slave auf dem Master mit diesem Passwort anmeldet:mysql -h <masterIP> -u repl -p<Passwort>
- wenn das Funktioniert, weiss man bescheid.
- In der mysqldump Datei ganz am Anfang finden wir im Kommentarblock eine Zeile, die folgendermaßen aussieht:
- Jetzt befindet sich auf dem Slave server schon eine konsistente, einigermaßen neuer Stand der Daten. Es ist nun nur noch erforderlich die Replikation neu zu konfigurierenAls 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
RESET SLAVE;-pPWD
CHANGE
TOMASTER
TO MASTER_HOST='<name oder IP des master servers>',MASTER_USER='repl',MASTER_PASSWORD='<passwort>',MASTER_LOG_FILE='<Name
LogFile>',
LogFile>; (Dieser Befehl ist vollständig im mysqldump enthalten. Bestenfalls einfach dort kopieren!)MASTER_LOG_POS=<Position
LogFile>;
Hier sind alle Parameter mit denen aus Schritt 5 zu ersetzen.
STARTSTART
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.