So überspringen Sie Fehler bei der MySQL-Master-Slave-Replikation

So überspringen Sie Fehler bei der MySQL-Master-Slave-Replikation

1. Traditionelle Binlog-Master-Slave-Replikation, Fehlerberichterstattungsmethode überspringen

mysql> Slave stoppen;
mysql> setze globalen sql_slave_skip_counter = 1;
mysql> Slave starten;
mysql> Slave-Status anzeigen \G

2. GTID-Master-Slave-Replikation, Fehlerberichtsmethode überspringen

mysql> stop slave; #Schalten Sie zuerst die Slave-Replikation aus;
mysql> Master ändern in ...ausgelassen... #Master-Slave-Replikation konfigurieren;
mysql> show slave status\G #Den Master-Slave-Status anzeigen;

Es wurde ein Fehler gefunden:

mysql> Slave-Status anzeigen\G
*************************** 1. Reihe ***************************
        Slave_IO_State: Wartet darauf, dass der Master ein Ereignis sendet
         Master_Host: 172.19.195.212
         Master_User: Master-Slave
         Master_Port: 3306
        Verbindungswiederholung: 60
       Master_Log_File:mysql-bin.000021
     Read_Master_Log_Pos: 194
        Relay-Log-Datei: nginx-003-relay-bin.000048
        Relay_Log_Pos: 454
    Relay_Master_Log_File: mysql-bin.000016
       Slave_IO_Running: Ja
      Slave_SQL_Running: Nein
       Replicate_Do_DB: 
     Replikat_Ignorieren_DB: 
      Tabelle_replizieren: 
    Tabelle_Ignorieren_replizieren: 
   Wild_Do_Tabelle replizieren: 
 Tabelle_Wild_Ignore_replizieren: 
          Last_Errno: 1007
          Last_Error: Fehler „Datenbank ‚Code‘ kann nicht erstellt werden; Datenbank existiert“ bei Abfrage. Standarddatenbank: ‚Code‘. Abfrage: ‚Datenbankcode erstellen‘
         Skip_Counter: 0
     Exec_Master_Log_Pos: 8769118
       Relay_Log_Space: 3500
       Until_Condition: Keine
        Bis_Log_Datei: 
        Bis_Log_Pos: 0
      Master_SSL_Allowed: Nein
      Master_SSL_CA_Datei: 
      Master_SSL_CA_Pfad: 
       Master_SSL_Zertifikat: 
      Master_SSL_Chiffre: 
        Master_SSL_Schlüssel: 
    Seconds_Behind_Master: NULL
Master_SSL_Verify_Server_Cert: Nein
        Last_IO_Errno: 0
        Letzter_E/A-Fehler: 
        Last_SQL_Errno: 1007
        Last_SQL_Error: Fehler „Datenbank ‚Code‘ kann nicht erstellt werden; Datenbank existiert“ bei Abfrage. Standarddatenbank: ‚Code‘. Abfrage: ‚Datenbankcode erstellen‘
 Server-IDs replizieren_ignorieren: 
       Master_Server_Id: 100
         Master_UUID: fea89052-11ef-11eb-b241-00163e00a190
       Master_Info_Datei: /usr/local/mysql/data/master.info
          SQL_Delay: 0
     SQL_Remaining_Delay: NULL
   Slave_SQL_Running_State: 
      Master_Retry_Count: 86400
         Master_Bind: 
   Zeitstempel des letzten IO-Fehlers: 
   Letzter SQL-Fehlerzeitstempel: 201022 09:31:29
        Master_SSL_Crl: 
      Master_SSL_Crlpfad: 
      Abgerufen_Gtid_Set: fea89052-11ef-11eb-b241-00163e00a190:8-5617
      Ausgeführtes_Gtid_Set: a56c9b04-11f1-11eb-a855-00163e128853:1-11224,
fea89052-11ef-11eb-b241-00163e00a190:1-5614
        Auto_Position: 1
     DB replizieren_neu schreiben: 
         Kanalname: 
      Master_TLS_Version: 
1 Zeile im Satz (0,01 Sek.)

Sie können sehen, dass Slave_SQL_Running NEIN ist, was bedeutet, dass ein Problem beim Abrufen des Binärprotokolls vorliegt.
Sie können den ungefähren Fehler auch in Last_Error sehen; (Aufgrund meiner vorherigen Vorgänge kann ich wahrscheinlich feststellen, dass dies daran liegt, dass im Binärprotokoll der Master-Bibliothek eine SQL-Anweisung zum Erstellen einer Codebibliothek vorhanden ist und ich diese Bibliothek bereits in der Slave-Bibliothek erstellt habe, sodass ein Konflikt vorliegen sollte;)

Lösung:

1. Wenn Sie sich über Ihre vorherigen Vorgänge im Klaren sind, können Sie die Bibliothek löschen, die den Konflikt verursacht hat.
2. Oder indem Sie die Transaktion mit GTID-Fehler überspringen

--- Verwenden Sie die Fehlernummer Last_SQL_Errno, um den spezifischen Fehler abzufragen transactionmysql> select * from performance_schema.replication_applier_status_by_worker where LAST_ERROR_NUMBER=1007\G
*************************** 1. Reihe ***************************
     KANALNAME: 
      WORKER_ID: 0
      THREAD_ID: NULL
    SERVICE_STATE: AUS
LETZTE_GESEHENE_TRANSAKTION: fea89052-11ef-11eb-b241-00163e00a190:5615
  LAST_ERROR_NUMBER: 1007
  LAST_ERROR_MESSAGE: Fehler „Datenbank ‚Code‘ kann nicht erstellt werden; Datenbank existiert“ bei Abfrage. Standarddatenbank: ‚Code‘. Abfrage: ‚Datenbankcode erstellen‘
 LAST_ERROR_TIMESTAMP: 2020-10-22 09:31:29
1 Zeile im Satz (0,00 Sek.)

mysql> Slave stoppen;
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

--- Überspringen Sie die Transaktion, in der ein Fehler gefunden wurde (der Wert von LAST_SEEN_TRANSACTION).
mysql> setze @@session.gtid_next='fea89052-11ef-11eb-b241-00163e00a190:5615';
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

mysql> beginnen;
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

--- Senden Sie eine leere Transaktion, da nach dem Festlegen von gtid_next der Lebenszyklus von gtid beginnt und durch explizites Senden einer Transaktion beendet werden muss.
mysql> festschreiben;
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

--- Zurück zum Automatikmodus;
mysql> setze @@session.gtid_next=automatisch;
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

mysql> Slave starten;
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

Durch die obigen Schritte wird die Transaktion mit dem GTID-Fehler übersprungen. Wenn nach dem Starten des Slaves immer noch ein Fehler auftritt, überspringen Sie ihn weiterhin gemäß diesem Schritt.

Wenn Sie erfahren sind, müssen Sie die Transaktion nicht abfragen. Sie können anhand von Executed_Gtid_Set beurteilen, dass die Transaktion mit dem Fehler fea89052-11ef-11eb-b241-00163e00a190:5615 ist. Da beim Ausführen der Transaktion ein Fehler gemeldet wird, wenn sie fea89052-11ef-11eb-b241-00163e00a190:1-5614 erreicht, sollte beurteilt werden, dass der Fehler in Transaktion 5615 aufgetreten ist.

Oben finden Sie Einzelheiten zum Überspringen von Fehlern bei der MySQL-Master-Slave-Replikation. Weitere Informationen zum Überspringen von MySQL-Fehlern finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • So beheben Sie Probleme mit doppelten Schlüsseln bei der MySQL-Master-Slave-Replikation
  • Umfassende Analyse des MySql-Master-Slave-Replikationsmechanismus
  • Detaillierte Erläuterung der MySQL Master-Slave-Replikation und der Lese-/Schreibtrennung
  • MySQL-Datenbank GTID realisiert Master-Slave-Replikation (super praktisch)
  • Implementierungsprinzip und Konfiguration der MySql Master-Slave-Replikation
  • MySQL Master-Slave-Replikationsprinzip und zu beachtende Punkte
  • Konfigurationsprozess für die MySQL-Master-Slave-Replikation
  • Umfassende Interpretation der MySQL Master-Slave-Replikation, vom Prinzip bis zur Installation und Konfiguration
  • Zusammenfassung verschiedener Replikationsmethoden für die MySQL Master-Slave-Replikation
  • Gängige Reparaturmethoden für die Trennung der MySQL Master-Slave-Replikation

<<:  JavaScript zum Erzielen eines einfachen Drag-Effekts

>>:  Detaillierte Erläuterung des Prinzips und des Implementierungsprozesses der Nginx-Konfiguration https

Artikel empfehlen

Zusammenfassung der MySQL InnoDB-Sperren

Inhaltsverzeichnis 1. Gemeinsam genutzte und exkl...

Beispiel einer Nginx-Standortübereinstimmungsregel

1. Grammatik Standort [=|~|~*|^~|@] /uri/ { ... }...

JS-Prinzip der asynchronen Ausführung und Rückrufdetails

1. JS-Prinzip der asynchronen Ausführung Wir wiss...

So verwenden Sie Vue zum Entwickeln öffentlicher Account-Webseiten

Inhaltsverzeichnis Projekthintergrund Start Erste...

Eine kurze Analyse des Zustandsverständnisses von React

Wie definiert man komplexe Komponenten (Klassenko...

Fünf Möglichkeiten zum automatischen Seitensprung in HTML

Im vorherigen Artikel haben wir drei gängige Meth...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 8.0.20

Tutorial zum Herunterladen und Installieren von M...

CSS- und HTML- und Front-End-Technologie-Schichtendiagramm

Die Beziehung zwischen Javascript und DOM ist seh...

jQuery-Plugin für ein nahtloses Karussell

Ein nahtloses Karussell ist ein sehr häufiger Eff...

Fallstudie zur Implementierung eines jQuery Ajax-Chatbots

Chatbots können viel manuelle Arbeit sparen und i...