0

MySQL, la réplication et ses aléas

Posted by Division-par-zero on 29 septembre 2013 in Backup, Bashful, Maintenance |

Ce billet fait suite à celui-ci « MySQL et la réplication » !

Suite à mes vérifications régulières (1 à 2 fois par mois), de mon système de sauvegarde, j’ai constaté un soucis avec la réplication de Mysql !

Pour rappel, le serveur Mysql Maître tourne sur mon Serveur Grumpy, et l’esclave de réplication tourne sur Bashful ! J’ai donc eu le message d’erreur suivant :

Could not parse relay log event entry. The possible reasons are: the master’s binary log is corrupted (you can check this by running ‘mysqlbinlog’ on the binary log), the slave’s relay log is corrupted (you can check this by running ‘mysqlbinlog’ on the relay log), a network problem, or a bug in the master’s or slave’s MySQL code. If you want to check the master’s binary log or slave’s relay log, you will be able to know their names by issuing ‘SHOW SLAVE STATUS’ on this slave.

Le message est plutôt flippant, il semblerait que le soucis ce soit glissé lors d’une récupération du fichier, entre le maître et l’esclave, j’ai trouvé pas mal de chose sur la toile, ce site m’ayant le plus aidé « http://www.redips.net/mysql/replication-slave-relay-log-corrupted/ »

Avec quelques étapes supplémentaires :

  1. Éxécuter la commande « show slave status\G » dans une commande mysql.
  2. Récupérer les valeurs de « Relay_Master_Log_File » et « Exec_Master_Log_Pos ».
  3. Vérifier sur le maître que le fichier pointé par « Relay_Master_Log_File », existe, si oui passez directement à l’étape 8
  4. Pas de chance, c’est que vous avez attendus trop longtemps avant de constater/corriger le problème, il va falloir récupérer les fichiers manquants depuis vos backups.
  5. Exemple « Relay_Master_Log_File = mysql-bin.000114 », et vous avez « mysql-bin.000117 » dans le dossier « /var/log/mysql/ » sur le maître, copier les fichiers « mysql-bin.000114, mysql-bin.000115, mysql-bin.000116 » depuis vos backup, dans « /var/log/mysql/ »
  6. Assurez-vous que les fichiers ais le bon owner, et les bons droits (mysql/adm ; rw-rw—-)
  7. Modifier le fichier « /var/log/mysql/mysql-bin.index », en ajoutant la totalité des fichiers que vous venez de rajouter à la liste.
  8. Dans une commande SQL, taper successivement les commandes suivantes :
    1. stop slave;
    2. reset slave;
    3. CHANGE MASTER TO master_log_file=’mysqld-bin.000114‘, master_log_pos=732418;
    4. start slave;
      /!\ Évidement, remplacer les valeurs en gras, par les votre, récupérées plus tôt.
  9. Normalement tous est ok, et la réplication devrait repartir comme sur des roulettes !

J’espère avoir aidé, et comme d’habitude, ce billet, me sert surtout de pense bête !

Laisser un commentaire

Copyright © 2010-2017 Le blog de Grumpy All rights reserved.
This site is using the Desk Mess Mirrored theme, v2.5, from BuyNowShop.com.