Heim  >  Artikel  >  Datenbank  >  Analyse des MySQL-Master-Slave-Synchronisierungsproblems

Analyse des MySQL-Master-Slave-Synchronisierungsproblems

PHP中文网
PHP中文网Original
2018-05-10 17:14:372154Durchsuche

Cluster-Bibliotheksstatus anzeigen, Slave-Status anzeigenG

Ursprünglicher Tipp aus der Bibliothek: Last_Error: Coordinator wurde gestoppt, weil bei den Workern Fehler aufgetreten sind. Der letzte Fehler war: Worker 1 konnte nicht ausgeführt werden Transaktion „864e6992-0a34-11e7-a98a-7cd30ac6c9ec:148408“ im Master-Protokoll mysql-bin.000010, end_log_pos 920578920. Weitere Details zu diesem oder anderen Fehlern, falls vorhanden, finden Sie im Fehlerprotokoll und/oder in der Tabelle performance_schema.replication_applier_status_by_worker.

1. Befolgen Sie die Anweisungen von Congku, um den Grund zu finden, und geben Sie den Befehl

select * from performance_schema.replication_applier_status_by_worker\G

ein, um

Diese Transaktion fand in der Tabelle r_com_patent statt und die Tabelle wurde gefunden, aber ich weiß nicht, in welchem ​​Datensatz.

2. Was geschah, als ich zur Hauptbibliothek ging, um die Binärdatei zu finden? Geben Sie den Befehl

Mysqlbinlog --no-defaults –v –v --base64-output=decode-rows /usr/local/mysql/data/master-bin.000010 | grep –A ‘10’ 920578920


ein, um den Datensatz endgültig zu finden.

Die Hauptbibliothek hat die Tabelle r_com_patent aktualisiert, aber die Clusterbibliothek kann den aktualisierten Datensatz nicht finden.

Konkret ändert die Hauptdatenbank den Datensatz mit patent_id 45 in der Tabelle r_com_patent und das Feld cid von NULL auf 3253026. Der Datensatz mit patent_id 45 in der Cluster-Datenbanktabelle r_com_patent hat ursprünglich das Feld cid 3253026. Die Replikation Der Mechanismus muss den Datensatz mit patent_id 45 und der ID NULL in der Datenbanktabelle r_com_patent finden, daher wurde er nicht gefunden. . .

3. Lösung

1) Sehen Sie sich den Datensatz im Master an.

Select * from r_com_patent where patent_id = 45;
2) Suchen Sie auf dem Slave nach dem aktualisierten Datensatz. Er sollte nicht vorhanden sein.

  Select * from r_com_patent where patent_id = 45;
3) Geben Sie die verlorenen Daten auf dem Slave ein oder ändern Sie sie. ​

  Insert into r_com_patent values(3253026,45);
4) Überspringen Sie die fehlergemeldete Transaktion auf dem Slave.

Stop slave;
Set @@SESSION.GTID_NEXT=’ 864e6992-0a34-11e7-a98a-7cd30ac6c9ec:148408’
Begin;
Commit;
Set @@SESSION.GTID_NEXT = AUTOMATIC;
Start slave;
Anschließend noch einmal prüfen

Show slave status\G

Das obige ist der detaillierte Inhalt vonAnalyse des MySQL-Master-Slave-Synchronisierungsproblems. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn