Différences entre les versions de « Mysql resynchronisation / replication »
m (a renommé Mysql Resynchronisation en Mysql Resynchronisation / Replication) |
|||
| Ligne 1 : | Ligne 1 : | ||
= Resynchronisation d'une réplication = | |||
== Première méthode == | == Première méthode == | ||
Version du 6 avril 2011 à 17:20
Resynchronisation d'une réplication
Première méthode
Maintenant que les serveurs MySQL de plate forme Claranet appartiennent tous à la v5, il est possible d'utiliser la commande LOAD DATA sans que le slave se désynchronise quelques heures plus tard.
Pour cela, sur le serveur slave:
- Détruire les bases qui sont répliquées via un DROP DATABASE <BASE> (S'assurer que les bases détruites sont bien répliquées en inspectant le champs Replicate_Wild_Do_Table obtenu via la sortie de SHOW SLAVE STATUS \G) - STOP SLAVE - Recréer les bases détruites - LOAD DATA FROM MATER; - Attendre (2 minutes grand max) - START SLAVE
Si tout s'est bien passé, nous n'avons pas vu de warnings ou d'erreurs en sortie lors de l'exécution des commandes précédentes.
Maintenant, il est possible que certaines sous-versions appartenant à la 5 sortent un warning lors du LOAD DATA FROM MASTER. Un SHOW WARNINGS montrera que cette commande est obsolète (LOAD DATA) et qu'il est nécessaire d'utiliser la méthode expliquée dans le paragraphe suivant (celle préconisée par MySQL) pour remettre sur pieds la réplication.
Deuxième méthode
Pour faciliter les choses, j'ai créé un script Shell sur le master et sur chaque Slave. Il permet d'effectuer une resynchro globale et complète en quelques minutes, sans trop interrompre le service.
Le script Shell est nommé Mysql-synchro-syncher-slave.sh sur les slaves.
Procédure à suivre :
- Sur le master executer : Mysql-synchro-syncher-master.sh --lock
Pour info, sur Nord le script effectue alors les actions suivantes :
- FLUSH TABLES WITH READ LOCK - Copie binaires des tables dans un répertoire temporaire - RESET MASTER - UNLOCK TABLES - Démarrage d'un daemon rsync qui va permettre d'exporter les tables binaires vers les slaves. Ce daemon rsync est lancé en avant-plan : il faudra taper Ctrl+C sur Nord pour le stopper, une fois que les slaves auront téléchargé les bases au format binaire.
- Sur chaque slave, executer : Mysql-synchro-syncher-slave.sh
Pour info, sur les slaves le script effectue alors les actions suivantes :
- Import des bases binaires, dans un répertoire temporaire, depuis le rsync lancé sur Nord - Arret du serveur MySQL local sur le slave - Remplacement des bases désynchronisées par les bases binaires importées depuis Nord - Effacement des infos de synchronisation - équivalent à un RESET SLAVE - Redémarrage du MySQL local - Le MySQL se reconnecte au master, et la synchro reprend.
Une fois que tous les slaves sont correctement resynchronisés, arreter le daemon Rsync lancé sur Nord (en tapant Ctrl+C).
- Procédure manuelle sur un slave
mysql> CHANGE MASTER TO
-> MASTER_HOST='master.fr.clara.net',
-> MASTER_PORT=3306,
-> MASTER_USER='clara_replic',
-> MASTER_PASSWORD='xxxx',
-> MASTER_LOG_FILE='xxxxxxx',
-> MASTER_LOG_POS=xx;
Query OK, 0 rows affected (0.00 sec)