Datenbankversion: mysql> select version(); +------------+ | version() | +------------+ | 5.6.10-Protokoll | +------------+ 1 Zeile im Satz (0,02 Sek.) Informationen zur synchronen Replikation: mysql> show slave status\G;
*************************** 1. Reihe *************************** Slave_IO_State: Wartet darauf, dass der Master ein Ereignis sendet Master_Host: 192.168.8.25 Master_Benutzer: repl Master_Port: 3306 Verbindungswiederholung: 60 Master_Log_File:mysql-bin.000007 Read_Master_Log_Pos: 5036 Relay-Log-Datei: M2-relay-bin.000008 Relay_Log_Pos: 408 Relay_Master_Log_File: mysql-bin.000007 Slave_IO_Running: Ja Slave_SQL_Running: Nein Replicate_Do_DB: Replicate_Ignore_DB: mysql Tabelle_replizieren: Tabelle_Ignorieren_replizieren: Wild_Do_Tabelle replizieren: Tabelle_Wild_Ignore_replizieren: Letzte_Fehlernummer: 1062 Last_Error: Write_rows-Ereignis konnte für Tabelle test.t nicht ausgeführt werden; doppelter Eintrag „12“ für Schlüssel 'PRIMARY', Fehlercode: 1062; Handler-Fehler HA_ERR_FOUND_DUPP_KEY; das Hauptprotokoll des Ereignisses mysql-bin.000007, end_log_pos 2267 Skip_Counter: 0 Exec_Master_Log_Pos: 2045 Relay_Log_Space: 3810 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: 1062 Last_SQL_Error: Write_rows-Ereignis konnte für Tabelle test.t nicht ausgeführt werden; doppelter Eintrag „12“ für Schlüssel 'PRIMARY', Fehlercode: 1062; Handler-Fehler HA_ERR_FOUND_DUPP_KEY; das Hauptprotokoll des Ereignisses mysql-bin.000007, end_log_pos 2267 Server-IDs replizieren_ignorieren: Master_Server_Id: 25 Master_UUID: cf716fda-74e2-11e2-b7b7-000c290a6b8f Master_Info_Datei: /usr/local/mysql/data2/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: 130313 07:24:43 Master_SSL_Crl: Master_SSL_Crlpfad: Abgerufen_Gtid_Set: cf716fda-74e2-11e2-b7b7-000c290a6b8f:141-151 Ausgeführtes_Gtid_Set: cf716fda-74e2-11e2-b7b7-000c290a6b8f:1-140 Auto_Position: 1 1 Zeile im Satz (0,02 Sek.)
FEHLER: Keine Abfrage angegeben Es kommt zu einem Primärschlüsselkonflikt. Da es sich um eine Testmaschine handelt, überspringe ich diesen direkt. mysql> set global sql_slave_skip_counter=1; FEHLER 1858 (HY000): sql_slave_skip_counter kann nicht festgelegt werden, wenn der Server mit GTID_MODE = ON ausgeführt wird. Generieren Sie stattdessen für jede Transaktion, die Sie überspringen möchten, eine leere Transaktion mit derselben GTID wie die Transaktion
Tipp: Da es im GTID-Modus ausgeführt wird, wird die Syntax sql_slave_skip_counter nicht unterstützt. Wenn Sie überspringen möchten, müssen Sie die Transaktions-ID auf einen Nullwert setzen. Es scheint, dass dies die einzige Methode ist. mysql> show global variables like '%GTID%'; +--------------------------+-----------------------------------------+ | Variablenname | Wert | +--------------------------+-----------------------------------------+ | enforce_gtid_consistency | EIN | | gtid_executed | cf716fda-74e2-11e2-b7b7-000c290a6b8f:1-140 | | gtid_mode | EIN | | gtid_owned | | | gtid_purged | cf716fda-74e2-11e2-b7b7-000c290a6b8f:1-140 | +--------------------------+-----------------------------------------+ 5 Zeilen im Satz (0,04 Sek.) mysql> setze global gtid_executed=''; FEHLER 1238 (HY000): Die Variable „gtid_executed“ ist eine schreibgeschützte Variable. MySQL> mysql> globales gtid_purged='' festlegen;
FEHLER 1840 (HY000): GTID_PURGED kann nur festgelegt werden, wenn GTID_EXECUTED leer ist. Frustrierend, direkte Einstellungen funktionieren nicht. Nachdem ich das Handbuch überprüft hatte, stellte ich fest, dass ich „Reset Master“ ausführen muss (Hinweis: Führen Sie es auf dem Slave aus, niemals auf dem Master). 
mysql> Master zurücksetzen; Abfrage OK, 0 Zeilen betroffen (0,16 Sek.)
mysql> Slave zurücksetzen; FEHLER 1198 (HY000): Dieser Vorgang kann nicht bei laufendem Slave ausgeführt werden. Führen Sie zuerst STOP SLAVE aus. mysql> Slave stoppen; Abfrage OK, 0 Zeilen betroffen (0,08 Sek.)
mysql> Slave zurücksetzen; Abfrage OK, 0 Zeilen betroffen (0,16 Sek.)
Der Zweck der Ausführung von „Reset Slave“ besteht darin, master.info und relay-log.info zu löschen, sodass Sie später die Master- auf Master-Slave-Replikation umstellen können. Erinnern Sie sich an den Punkt gtid_purged gerade eben? Setzen Sie einfach den nächsten Punkt zurück. Hier sind die Schritte: mysql> zeige globale Variablen wie „%GTID%“; +--------------------------+----------+ | Variablenname | Wert | +--------------------------+----------+ | enforce_gtid_consistency | EIN | | gtid_ausgeführt | | | gtid_mode | EIN | | gtid_owned | | | gtid_purged | | +--------------------------+----------+ 5 Zeilen im Satz (0,06 Sek.)
mysql> setze global gtid_purged='cf716fda-74e2-11e2-b7b7-000c290a6b8f:1-141'; Abfrage OK, 0 Zeilen betroffen (0,16 Sek.)
mysql> ÄNDERN SIE MASTER IN MASTER_HOST='192.168.8.25',MASTER_USER='repl',MASTER_PASSWORD='repl' ,MASTER_AUTO_POSITION = 1; Abfrage OK, 0 Zeilen betroffen, 2 Warnungen (0,32 Sek.)
mysql> Slave starten; Abfrage OK, 0 Zeilen betroffen (0,13 Sek.)
mysql> Slave-Status anzeigen\G; *************************** 1. Reihe *************************** Slave_IO_State: Wartet darauf, dass der Master ein Ereignis sendet Master_Host: 192.168.8.25 Master_Benutzer: repl Master_Port: 3306 Verbindungswiederholung: 60 Master_Log_File:mysql-bin.000007 Read_Master_Log_Pos: 5036 Relay-Log-Datei: M2-relay-bin.000008 Relay_Log_Pos: 408 Relay_Master_Log_File: mysql-bin.000007 Slave_IO_Running: Ja Slave_SQL_Running: Nein Replicate_Do_DB: Replicate_Ignore_DB: mysql Tabelle_replizieren: Tabelle_Ignorieren_replizieren: Wild_Do_Tabelle replizieren: Tabelle_Wild_Ignore_replizieren: Letzte_Fehlernummer: 1050 Last_Error: Fehler „Tabelle ‚t0‘ ist bereits vorhanden“ bei der Abfrage. Standarddatenbank: „Test“. Abfrage: „Tabelle t0 wie t erstellen“ Skip_Counter: 0 Exec_Master_Log_Pos: 2298 Relay_Log_Space: 3557 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: 1050 Last_SQL_Error: Fehler „Tabelle ‚t0‘ ist bereits vorhanden“ bei der Abfrage. Standarddatenbank: „Test“. Abfrage: „Tabelle t0 wie t erstellen“ Server-IDs replizieren_ignorieren: Master_Server_Id: 25 Master_UUID: cf716fda-74e2-11e2-b7b7-000c290a6b8f Master_Info_Datei: /usr/local/mysql/data2/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: 130313 07:50:42 Master_SSL_Crl: Master_SSL_Crlpfad: Abgerufen_Gtid_Set: cf716fda-74e2-11e2-b7b7-000c290a6b8f:142-151 Ausgeführtes_Gtid_Set: cf716fda-74e2-11e2-b7b7-000c290a6b8f:1-141 Auto_Position: 1 1 Zeile im Satz (0,02 Sek.)
FEHLER: Keine Abfrage angegeben ### Sehen Sie, die Fehlermeldung hier ist anders. Wiederholen Sie diese Methode, bis die synchrone Replikation normal ist.
mysql> Slave stoppen; Abfrage OK, 0 Zeilen betroffen (0,07 Sek.)
mysql> Master zurücksetzen; Abfrage OK, 0 Zeilen betroffen (0,17 Sek.)
mysql> Slave zurücksetzen; Abfrage OK, 0 Zeilen betroffen (0,16 Sek.)
mysql> setze global gtid_purged='cf716fda-74e2-11e2-b7b7-000c290a6b8f:1-151'; Abfrage OK, 0 Zeilen betroffen (0,13 Sek.)
mysql> ÄNDERN SIE MASTER IN MASTER_HOST='192.168.8.25',MASTER_USER='repl',MASTER_PASSWORD='repl' ,MASTER_AUTO_POSITION = 1; Abfrage OK, 0 Zeilen betroffen, 2 Warnungen (0,33 Sek.)
mysql> Slave starten; Abfrage OK, 0 Zeilen betroffen (0,11 Sek.)
mysql> Slave-Status anzeigen\G; *************************** 1. Reihe *************************** Slave_IO_State: Wartet darauf, dass der Master ein Ereignis sendet Master_Host: 192.168.8.25 Master_Benutzer: repl Master_Port: 3306 Verbindungswiederholung: 60 Master_Log_File:mysql-bin.000007 Read_Master_Log_Pos: 5036 Relay-Log-Datei: M2-relay-bin.000008 Relay_Log_Pos: 408 Relay_Master_Log_File: mysql-bin.000007 Slave_IO_Running: Ja Slave_SQL_Running: Ja Replicate_Do_DB: Replicate_Ignore_DB: mysql Tabelle_replizieren: Tabelle_Ignorieren_replizieren: Wild_Do_Tabelle replizieren: Tabelle_Wild_Ignore_replizieren: Last_Errno: 0 Letzter_Fehler: Skip_Counter: 0 Exec_Master_Log_Pos: 5036 Relay_Log_Space: 819 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: Sekunden_Hinter_Master: 0 Master_SSL_Verify_Server_Cert: Nein Last_IO_Errno: 0 Letzter_E/A-Fehler: Last_SQL_Errno: 0 Letzter_SQL_Fehler: Server-IDs replizieren_ignorieren: Master_Server_Id: 25 Master_UUID: cf716fda-74e2-11e2-b7b7-000c290a6b8f Master_Info_Datei: /usr/local/mysql/data2/master.info SQL_Delay: 0 SQL_Remaining_Delay: NULL Slave_SQL_Running_State: Der Slave hat das gesamte Relay-Protokoll gelesen und wartet auf die Aktualisierung durch den Slave-E/A-Thread. Master_Retry_Count: 86400 Master_Bind: Zeitstempel des letzten IO-Fehlers: Letzter_SQL_Fehler_Zeitstempel: Master_SSL_Crl: Master_SSL_Crlpfad: Abgerufenes_Gtid_Set: Ausgeführtes_Gtid_Set: cf716fda-74e2-11e2-b7b7-000c290a6b8f:1-151 Auto_Position: 1 1 Zeile im Satz (0,01 Sek.)
FEHLER: Keine Abfrage angegeben Haha, es ist endlich gelöst. Es war so ein lästiges Problem. Wenn Sie eine bessere und bequemere Lösung haben, antworten Sie mir bitte, danke. Das könnte Sie auch interessieren:- Detaillierte Einführung in den GTID-Modus der MySQL Master-Slave-Replikation
- MySQL-Datenbank GTID realisiert Master-Slave-Replikation (super praktisch)
- Ein Beispiel für die Umstellung der traditionellen Replikation auf GTID-Replikation ohne Geschäftsunterbrechung in MySQL 5.7
- Detaillierte Erläuterung der MySQL Master-Slave-Replikationspraxis - GTID-basierte Replikation
- MySQL 5.6 Master-Slave-Replikation basierend auf GTID
- Tutorial zur Verwendung des GTIDs-Replikationsprotokolls und des Ausfallprotokolls in MySQL
- Spezifische Verwendung der GTID-Replikation bei der MySQL-Replikation
|