Frage

Ich versuche, die Replikation für eine große (120 GB) MySQL-Datenbank einzurichten, und habe einen Fehler gemacht.

Ich habe den Master heruntergefahren, die Datendateien kopiert und den Master neu gestartet.Jetzt habe ich den Slave eingerichtet und gestartet, und mir wird klar, dass ich es versäumt habe, ihn zu bekommen MASTER_LOG_FILE Und MASTER_LOG_POS Werte, die zum Einrichten der Replikation erforderlich sind.

Ich habe immer noch eine unberührte Kopie der Datendateien.Gibt es eine Möglichkeit, dies festzustellen? MASTER_LOG_FILE Und MASTER_LOG_POS aus diesen Dateien?

Verwandte Frage:

  • Was passiert, wenn Sie das einstellen? MASTER_LOG_POS auf einen früheren Zeitpunkt?
  • Liege ich richtig in der Annahme, dass doppelte Abfragen ausgeführt werden, was möglicherweise zu doppelten Daten führt?

Bearbeiten

Ich habe das untersucht mysqlbinlog Befehl und haben herausgefunden, was wie die richtigen Informationen aussieht, indem Sie Folgendes ausgeführt haben:

mysqlbinlog --to-last-log --start-datetime='2015-06-21 20:05:00'
    mysql-bin.000006 | grep end_log_pos

Die Ausgabe sieht in etwa so aus:

... a whole bunch more lines ...

#150621 20:10:21 server id 1  end_log_pos 720159843     Query   thread_id=901489    exec_time=0 error_code=0
#150621 20:10:21 server id 1  end_log_pos 720161877     Query   thread_id=901489    exec_time=0 error_code=0
#150621 20:10:21 server id 1  end_log_pos 720162762     Query   thread_id=901489    exec_time=0 error_code=0
#150621 20:10:22 server id 1  end_log_pos 720164796     Query   thread_id=901489    exec_time=0 error_code=0
#150621 20:10:22 server id 1  end_log_pos 720164815     Stop

Ich schätze, ich sollte eine der letzten beiden Positionen verwenden, bin mir aber nicht sicher, welche.

War es hilfreich?

Lösung

Hoffentlich haben Sie mysqld noch nicht auf dem Slave gestartet.

Zufällig ist eine Binlog-Position auch die Binlog-Größe am Ende jedes Binlog-Ereignisses.In Ihrem Fall können Sie das letzte Binlog verwenden, das der Slave sieht, was meiner Meinung nach der Fall ist mysql-bin.000006.Ermitteln Sie die Dateigröße und verwenden Sie diese als Position.

Daher würden Sie auf dem Slave laufen

STOP SLAVE;
CHANGE MASTER TO
    MASTER_HOST='...',
    MASTER_PORT=3306,
    MASTER_USER='repluser',
    MASTER_PASSWORD='replpassword',
    MASTER_LOG_FILE='mysql-bin.00006',
    MASTER_LOG_POS=720164815;
START SLAVE;

und das sollte reichen!!!

Ich habe bereits besprochen, dass die Binlog-Position die Dateigröße ist

Du hast auch gefragt

Was passiert, wenn Sie MASTER_LOG_POS auf einen früheren Zeitpunkt setzen?

Ja, es werden diese Binlog-Ereignisse wiedergegeben und Probleme verursachen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit dba.stackexchange
scroll top