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

CentOS8 - bash: verstümmelte Zeichen und Lösungen

Diese Situation tritt normalerweise auf, weil das...

Ein Beispiel für die Berechnungsfunktion calc in CSS im Website-Layout

calc ist eine Funktion in CSS, die zum Berechnen ...

Vue implementiert Akkordeoneffekt

In diesem Artikelbeispiel wird der spezifische Co...

So verstecken Sie RAR-Dateien in Bildern

Sie können dieses Logo lokal als .rar-Datei speic...

Analysieren Sie den Unterschied zwischen ES5 und ES6

Inhaltsverzeichnis Überblick Funktionssignatur Op...

CSS3 realisiert den Effekt der kontinuierlichen Dreiecksvergrößerung

1. CSS3-Dreieck vergrößert weiterhin Spezialeffek...

So verwenden Sie den Linux-Befehl md5sum

01. Befehlsübersicht md5sum - MD5-Prüfcode berech...

Detaillierte Erläuterung der Verwendung von Object.create-Instanzen in js

1. Erstellen Sie mit der Methode Object.create() ...

Detaillierte Erklärung zur Verwendung von Teleport in Vue3

Inhaltsverzeichnis Zweck des Teleports So funktio...

Detaillierte Schritte zur Installation des NERDTree-Plugins in Vim unter Ubuntu

NERDTree ist ein Dateisystembrowser für Vim. Mit ...

Detaillierte Erklärung zum Lay-Loading von JavaScript

Inhaltsverzeichnis Lazy Loading CSS-Stile: HTML-T...