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 :
|
Il faut :
|
||||||
|
|
||||||
|
@ -21,11 +21,11 @@ Il faut également :
|
||||||
|
|
||||||
* autoriser les connexions MySQL distantes ;
|
* autoriser les connexions MySQL distantes ;
|
||||||
* activer les logs binaires sur chaque serveur : _log_bin mixed_ ;
|
* 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**) ;
|
* positionner un _server-id_ différent sur chaque serveur (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';`.
|
* 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_ :
|
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),
|
- 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.
|
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) :
|
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
|
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
|
**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 :
|
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) :
|
**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>
|
<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`.
|
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 !
|
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 :
|
À 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`.
|
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.
|
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).
|
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
|
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
|
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.
|
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