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

So konfigurieren Sie NAS unter Windows Server 2019

Vorwort Dieses Tutorial installiert die neuste Ve...

So fügen Sie einem Alpine-Image einen Ansible-Dienst hinzu

Verwenden Sie apk add ansible, um den Ansible-Die...

So erstellen Sie einen MySQL PXC-Cluster

Inhaltsverzeichnis 1. Einführung in PXC 1.1 Einfü...

MySQL-Join-Abfrage (Left Join, Right Join, Inner Join)

1. Allgemeine Verbindungen für MySQL INNER JOIN (...

Analyse von Multithread-Programmierbeispielen unter Linux

1 Einleitung Die Thread-Technologie wurde bereits...

Prinzip und Anwendung der MySQL-Master-Slave-Synchronisation

Inhaltsverzeichnis 1. Master-Slave-Synchronisatio...

Zusätzliche Anweisungen zur Verwendung von Gettern und Aktionen in Vuex

Vorbemerkungen 1.Unterschiede zwischen Vue2.x und...

Node.js verwendet die Express-Fileupload-Middleware zum Hochladen von Dateien

Inhaltsverzeichnis Initialisieren des Projekts Sc...

Methode zur Wiederherstellung von Betriebs- und Wartungsdaten der MySQL-Datenbank

In den vorherigen drei Artikeln wurden gängige Si...

Native JS-Implementierung der Slider-Intervallkomponente

In diesem Artikelbeispiel wird der spezifische Co...