précisions
This commit is contained in:
parent
a1fe6c97aa
commit
d98473a49d
|
@ -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.
|
||||
|
||||
|
|
Loading…
Reference in a new issue