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

Compare with Current View Page History

« Previous Version 5 Next »

Rebuild Slave-DB & Replication

  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. Auf dem Master-Server nun folgenden Schritte durchführen
    • Anmeldung in MySQL, den Master Status abrufen, Daten notieren um die Replikation später auf dem Slave wieder an genau dieser Stelle wieder zu starten. Dafür folgende Befehle nutzen:
      • mysql -uUSER -pPWD
      • SHOW MASTER STATUS \G;
      • Binlog-File <Name LogFile> und Binlog-Position <Position LogFile> merken
      • QUIT;
    • Durch QUIT; ist man nun wieder auf dem Master Datenbank Server. Nun wird ein MySQL-Dump geschrieben. Dazu ein Backup-Verzeichnis anlegen und in selbiges wechseln. Der MySQL-Dumb wird nun mit dem folgenden Befehl ausgeführt:
      • mysqldump -uUSER -pPWD --databases JTELWeb JTELStats JTELLog --add-drop-database --add-drop-table --events --routines > filename
      Hierzu eine kurze Erklärung: 
      • 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'
      Als nächstes den MySQL-Dump editieren (normalerweise ist dieser Schritt nicht erforderlich. Falls ein Import des mysqldumps nicht ohne weiteres klappt mit der Meldung Error in Line 1..., liegt das am Format. Besser ist es dafür zu sorgen, dass sowohl beim mysqldump erstellen als auch beim mysqldump einspielen der Zusatz --default_character_set utf8 verwendet wird.)
      • alle Zeichen "-- " durch "#" ersetzen
  3. ENTWEDER a ODER b!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
  4. 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>;
    • 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.
  5. Replikation prüfen. Dazu irgendein Ereignis im Master hervorrufen, das dann in der Slave Datenbank repliziert wird. Beispielsweise ein Anruf. 
    • Testanruf im System
    • Master-Server Status prüfen
    • Slave-Status prüfen
    • letzter Eintrag sollte identisch sein, so dass ACD-System an sich funktioniert und auch die Replikation
    Ob die Slave Datenbank den Anruf aufgezeichnet hat und dieser in die Slave Datenbank repliziert wurde kann man beispielsweise durch folgende Befehle auf beiden Datenbanken verifizieren:
    • Login auf Master / Slave Datenbank Server
    • Login in MySQL: mysql -uUSER -pPWD
    • Richtige Datenbank wählen: use JTELStats
    • Anrufdaten abfragen: SELECT * FROM StatisticsPartA WHERE ANUMBER LIKE '%<Anrufernummer>%' ORDER BY ID DESC LIMIT 1;
  6. Die Datenbanken sollten nun konsistent sein, da auf dem Slave-Server die Replikation zeitlich vor dem Zeitstempel des MySQL-Dumps beginnt

  • No labels