Maison  >  Article  >  base de données  >  Comment ignorer les erreurs dans la synchronisation maître-esclave MySQL

Comment ignorer les erreurs dans la synchronisation maître-esclave MySQL

coldplay.xixi
coldplay.xixioriginal
2021-01-06 11:19:196631parcourir

Méthode d'erreur de synchronisation maître-esclave MySQL : 1. Ignorez le nombre de transactions spécifié, le code est [mysql>SET GLOBAL SQL_SLAVE_SKIP..] 2. Modifiez le fichier de configuration mysql, transmettez le [slave_skip_errors]; paramètre pour sauter toutes les erreurs.

Comment ignorer les erreurs dans la synchronisation maître-esclave MySQL

L'environnement d'exploitation de ce tutoriel : système windows7, mysql version 5.6.14, ordinateur DELL G3. Cette méthode convient à toutes les marques d'ordinateurs.

Recommandations d'apprentissage gratuites associées : Tutoriel vidéo MySQL

Erreurs de saut de synchronisation maître-esclave MySQL :

1. nombre de transactions spécifié :

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

2. Modifiez le fichier de configuration mysql et utilisez le paramètre slave_skip_errors pour ignorer toutes les erreurs ou erreurs du type spécifié

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

Exemple : Ce qui suit simule une erreur scénario

Environnement (un environnement de réplication maître-esclave configuré)

IP de la base de données principale : 192.168.247.128

IP de la base de données esclave : 192.168.247.130

mysql version : 5.6.14

binlog-do-db = mydb

Exécuter l'instruction suivante sur le maître :

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

Afficher l'état de la réplication sur l'esclave

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)

Comme le montrent les résultats, une erreur s'est produite lorsque Read_Master_Log_Pos: 2341,Exec_Master_Log_Pos: 1919Last_SQL_Error: Error 'Table 'mysql.t1' doesn't exist' on query

Parce que seul le binlog est enregistré pour mydb, lorsque la table des autres bases de données est exploitée dans la bibliothèque mydb, la table n'est pas disponible sur l'esclave. Un problème s'est produit alors qu'elle existait.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn