You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 18 Next »

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. 

  1. 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;

         

  2. 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
  3. MySQL-Dump vom Master Datenbankserver auf den Slave Datenbank Server kopieren.
    Verwende hierfür das Tool deiner Wahl: Kommandozeile (scp), WinSCP, ...

  4. ENTWEDER a ODER b! BESSER IST a! Wir wechseln wieder auf den Slave-Server und importieren nun den mysqldump.
    1. 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>
    2. Dafür verwenden wir die folgenden Befehle
      • mysql -uUSER -pPWD < filename.sql

         

  5. 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;
    Nun überprüfen wir den Slave Status (ein paar mal) mit dem Befehl:
    • SHOW SLAVE STATUS \G;
    und erwarten folgendes Ergebnis:
    • Slave_IO_Running: Yes
    • Slave_SQL_Running: Yes
    Damit läuft die Replikation nun wieder. Der Name des Logfiles und die Position sollten zeitnah ziemlich genau denen des show master status auf der Master-Datenbank entsprechen.

  6. 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. 

  • No labels