précisions

This commit is contained in:
gcolpart 2017-01-07 16:25:45 +01:00
parent a1fe6c97aa
commit d98473a49d

View file

@ -1,10 +1,10 @@
---
title: Howto MySQL : réplication
title: Howto réplication MySQL
...
Pour le guide d'installation et d'usage courant, consultez [/HowtoMySQL]().
Pour le guide d'installation et d'usage courant, voir [HowtoMySQL](/HowtoMySQL).
## Préparation d'une réplication MASTER/SLAVE
# Préparation d'une réplication MASTER/SLAVE
Il faut :
@ -21,11 +21,11 @@ Il faut également :
* autoriser les connexions MySQL distantes ;
* activer les logs binaires sur chaque serveur : _log_bin mixed_ ;
* positionner un _server-id_ différent sur chaque serveur (a priori, **ne pas utiliser 0**) ;
* créer un utilisateur dédié pour la réplication sur chaque serveur avec le droit _REPLICATION SLAVE_ : `GRANT REPLICATION SLAVE ON *.* TO repl@'%' IDENTIFIED BY 'PASSWORD';`.
* positionner un _server-id_ différent sur chaque serveur (ne pas utiliser 0) ;
* créer un utilisateur dédié pour la réplication : `GRANT REPLICATION SLAVE ON *.* TO repl@'%' IDENTIFIED BY 'PASSWORD';`.
## Activation d'une réplication MASTER/SLAVE
# Activation d'une réplication MASTER/SLAVE
Il faut récupérer les informations _MASTER_LOG_FILE_ et _MASTER_LOG_POS_ :
- soit sur l'un des deux serveurs inactifs avec `SHOW MASTER STATUS` (dans le cas de deux serveurs avec _datadir_ identique),
@ -55,7 +55,7 @@ Puis démarrer la réplication sur le serveur B avec la commande : `START SLAVE`
Enfin, exécuter `SHOW SLAVE STATUS` pour vérifier le bon fonctionnement.
## Désactivation
# Désactivation
Pour supprimer toute trace de réplication (sauf si des infos sont en dur dans la configuration) :
@ -71,7 +71,7 @@ Pour éviter que la réplication démarre automatiquement au démarrage, on ajou
skip-slave-start
~~~
## Trucs et astuces pour la réplication MySQL
# Trucs et astuces pour la réplication MySQL
**Astuce 1** : Une astuce parfois très utile est la possibilité d'exécuter des requêtes qui ne seront pas prises en compte
par le binlog (et donc non répliquée !). Cela nécessite le droit SUPER :
@ -91,17 +91,19 @@ log-slave-updates
**Astuce 3** : Sauter une requête déjà présente dans les binlog sur le slave (à tester) :
<https://stackoverflow.com/questions/17701524/mysql-replication-skip-statement-is-it-possible>
## Etapes supplémentaires pour une réplication _master-master_
# Réplication MASTER/MASTER
Positionner la directive `auto-increment-increment = 10` sur chaque serveur
Pour une réplication MASTER/MASTER, il faut simplement activer deux réplications MASTER/SLAVE entre les deux serveurs concernés.
Positionner la directive `auto-increment-offset` avec une valeur numérique différente sur chaque serveur
On conseille également de :
Exemple : `auto-increment-offset 2` sur le serveur B
- positionner la directive `auto-increment-increment = 10` sur chaque serveur
- positionner la directive `auto-increment-offset` avec une valeur numérique différente sur chaque serveur
Effectuer l'étape _Activation_ dans le sens A->B et B->A
Exemple : `auto-increment-offset 2` sur l'un des deux serveurs
## Résolution des erreurs lors de la réplication
# Résolution des erreurs lors de la réplication
On vérifie les erreurs avec les commandes `SHOW SLAVE STATUS` et `SHOW MASTER STATUS`.
@ -250,7 +252,7 @@ Si un `SHOW SLAVE STATUS` ne retourne pas d'erreur mais que la réplication ne s
Il se peut que le master se réplique sur 2 slaves ayant un server-id identique !
### Changement de la position dans un `Relay_log`
## Changement de la position dans un `Relay_log`
À faire uniquement si en tentant de changer la position d'un `Relay_log` sur un slave, vous obtenez cette erreur :
@ -268,9 +270,9 @@ mysql> STOP SLAVE;
Puis éditer (en gardant une sauvegarde) le fichier `${datadir}/relay-log.info`. La première ligne correspond au `Relay_Log_File`, la seconde au `Relay_Log_Pos`.
Redémarrer MySQL.
## Contrôle de l'intégrité de la réplication
# Contrôle de l'intégrité de la réplication
### pt-table-checksum
## pt-table-checksum
C'est un outil de [Percona](https://www.percona.com/downloads/percona-toolkit/) intégré dans son toolkit. (Package Debian [percona-toolkit](https://packages.debian.org/search?keywords=percona-toolkit) disponible à partir de Wheezy).
Manuel : https://www.percona.com/doc/percona-toolkit/2.1/pt-table-checksum.html
@ -284,7 +286,7 @@ MAILTO=jdoe@example.com
42 9 * * 7 pt-table-checksum -q
~~~
### pt-table-sync
## pt-table-sync
Si *pt-table-checksum* vous a remonté des incohérences, vous pouvez avec cet outil les corriger. Cela va identifier les différences et les corriger avec un `REPLACE` sur le master (qui sera donc répliqué sur le slave), garantissant la cohérence des données.