Maison > Article > base de données > Comment ignorer les erreurs dans la synchronisation maître-esclave MySQL
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.
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: 1919
Last_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!