Heim  >  Artikel  >  Datenbank  >  So überspringen Sie Fehler bei der MySQL-Master-Slave-Synchronisierung

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

coldplay.xixi
coldplay.xixiOriginal
2021-01-06 11:19:196631Durchsuche

So überspringen Sie Fehler bei der MySQL-Master-Slave-Synchronisierung: 1. Überspringen Sie eine bestimmte Anzahl von Transaktionen, der Code lautet [mysql>SET GLOBAL SQL_SLAVE_SKIP..] 2. Ändern Sie die MySQL-Konfigurationsdatei und überspringen Sie alle Fehler durch die [slave_skip_errors ] Parameter .

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

Die Betriebsumgebung dieses Tutorials: Windows7-System, MySQL-Version 5.6.14, DELL G3-Computer. Diese Methode ist für alle Computermarken geeignet.

Verwandte kostenlose Lernempfehlungen: MySQL-Video-Tutorial

MySQL-Master-Slave-Synchronisierungsfehlermethode:

1. Überspringen Sie eine bestimmte Anzahl von Transaktionen:

mysql>slave stop;
mysql>SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1        #跳过一个事务
mysql>slave start

2. Ändern Sie die MySQL-Konfigurationsdatei über Slave_skip_errors Parameter zum Überspringen aller Fehler oder bestimmter Fehlertypen Datenbank-IP: 192.168.247.130slave_skip_errors参数来跳所有错误或指定类型的错误

vi /etc/my.cnf
[mysqld]
#slave-skip-errors=1062,1053,1146  #跳过指定error no类型的错误
#slave-skip-errors=all  #跳过所有错误

例:下面模拟一个错误场景

环境(一个已经配置好的主从复制环境)

master数据库IP:192.168.247.128

slave数据库IP:192.168.247.130

mysql版本:5.6.14

binlog-do-db = mydb

在master上执行以下语句:

mysql>use mysql;
mysql>create table t1 (id int);
mysql>use mydb;
mysql>insert into mysql.t1 select 1;

在slave上查看复制状态

mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.247.128
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000017
          Read_Master_Log_Pos: 2341
               Relay_Log_File: DBtest1-relay-bin.000011
                Relay_Log_Pos: 494
        Relay_Master_Log_File: mysql-bin.000017
             Slave_IO_Running: Yes
            Slave_SQL_Running: No
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 1146
                   Last_Error: Error 'Table 'mysql.t1' doesn't exist' on query. Default database: 'mydb'. Query: 'insert into mysql.t1 select 1'
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 1919
              Relay_Log_Space: 1254
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: NULL
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 1146
               Last_SQL_Error: Error 'Table 'mysql.t1' doesn't exist' on query. Default database: 'mydb'. Query: 'insert into mysql.t1 select 1'
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 1
                  Master_UUID: f0f7faf6-51a8-11e3-9759-000c29eed3ea
             Master_Info_File: /var/lib/mysql/master.info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: 
           Master_Retry_Count: 86400
                  Master_Bind: 
      Last_IO_Error_Timestamp: 
     Last_SQL_Error_Timestamp: 131210 21:37:19
               Master_SSL_Crl: 
           Master_SSL_Crlpath: 
           Retrieved_Gtid_Set: 
            Executed_Gtid_Set: 
                Auto_Position: 0
1 row in set (0.00 sec)

由结果可以看到,Read_Master_Log_Pos: 2341,Exec_Master_Log_Pos: 1919时出错了Last_SQL_Error: Error 'Table 'mysql.t1' doesn't exist' on query

MySQL-Version: 5.6.14

binlog-do-db = mydb🎜🎜Führen Sie die folgende Anweisung auf dem Master aus:🎜rrreee🎜Sehen Sie sich den Replikationsstatus auf dem Slave an🎜rrreee🎜Die Ergebnisse können sein Siehe, Read_Master_Log_Pos: 2341, Exec_Master_Log_Pos: 1919 hat einen Fehler gemacht Last_SQL_Error: Fehler 'Tabelle 'mysql.t1' existiert nicht' bei Abfrage.🎜🎜Denn nur für Mydb Wenn Binlog Tabellen in anderen Datenbanken in der MyDB-Bibliothek aufzeichnet, die Tabelle jedoch nicht auf dem Slave vorhanden ist, tritt ein Fehler auf. 🎜

Das obige ist der detaillierte Inhalt vonSo überspringen Sie Fehler bei der MySQL-Master-Slave-Synchronisierung. 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
Vorheriger Artikel:Wie Python MySQL betreibtNächster Artikel:Wie Python MySQL betreibt