Erreur de réplication Master - Slave MySQL

Ce billet est destiné à vous aider à réparer une petite erreur de réplication MySQL si le message suivant apparaît dans le logs :

[ERROR] Slave: Error 'Duplicate entry 'XXXXXXXXXX' for key Y' on query.

Pour corriger ce soucis bien moins grave qu'il n'y paraît, il suffit de se connecter au SQL esclave et de lancer les commandes suivantes :

root@slave ~> mysql
mysql> SHOW SLAVE STATUS;

A ce moment là, vous aurez la requête exacte... Imaginons le retour suivant :

mysql> SHOW SLAVE STATUS;
 Error 'Duplicate entry '1825519466' for key 1' on query. Default database: 'ma_base'. Query: 'INSERT INTO ma_table VALUES('1825519466', 'toto', 'titi', 'tata')'

Il vous suffit donc de supprimer la ligne incriminée dans votre base :

mysql> use ma_base;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> delete from ma_table where id=1825519466;
Query OK, 1 row affected (0.01 sec)

De redémarrer le processus SLAVE :

mysql> SLAVE START;
Query OK, 0 rows affected (0.00 sec)

Et de vérifier que tout fonctionne :

mysql> SHOW SLAVE STATUS;
Waiting for master to send event | XX.XXX.XXX.XXX | repl        |        3306 |            60 | mysql-bin.001203 |            63736015 | sql01-relay-bin.003610 |      59223223 | mysql-bin.001203      | Yes              | Yes

Et voilà !

Soucis réparé !

Commentaires

1. Le mardi, août 10 2010, 12:59 par ludo

Salut,

Il y a un poil plus simple, sur le serveur slave, tu peux faire ceci :

SLAVE STOP; SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; SLAVE START;

En gros, tu stoppes la réplication, tu lui dis de zapper 1 transaction foireuse, et tu relances la réplication...

2. Le mercredi, août 11 2010, 11:33 par Sébastien Palma

Merci pour l'astuce :)

Effectivement c'est bien plus simple et un poil moins dangereux (pas de risque de se planter dans la requête de suppression).

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.

Fil des commentaires de ce billet