relecture [5/n]

This commit is contained in:
gcolpart 2016-12-16 02:03:44 +01:00
parent 12d4fd62b4
commit 57553c86ad

View file

@ -1,5 +1,5 @@
--- ---
title: Howto MySQL : réplication. title: Howto MySQL : réplication
... ...
Pour le guide d'installation et d'usage courant, consultez [/HowtoMySQL](). Pour le guide d'installation et d'usage courant, consultez [/HowtoMySQL]().
@ -30,7 +30,7 @@ Récupérer les informations sur `MASTER_LOG_FILE` et `MASTER_LOG_POS` dans le d
Sur le serveur B (le _slave_ en mode master-slave), exécuter : Sur le serveur B (le _slave_ en mode master-slave), exécuter :
~~~ ~~~
CHANGE MASTER TO mysql> CHANGE MASTER TO
MASTER_HOST='$MASTER_IP', MASTER_HOST='$MASTER_IP',
MASTER_USER='repl', MASTER_USER='repl',
MASTER_PASSWORD='XXX', MASTER_PASSWORD='XXX',
@ -38,11 +38,12 @@ CHANGE MASTER TO
MASTER_LOG_POS=NNN; MASTER_LOG_POS=NNN;
~~~ ~~~
**Bien que non obligatoire, il est recommandé de toujours indiquer les directives `MASTER_LOG_FILE` et `MASTER_LOG_POS`** /!\\ **Bien que non obligatoire, il est recommandé de toujours indiquer les directives `MASTER_LOG_FILE` et `MASTER_LOG_POS`**
Pour exclure une base de la réplication, dans `/etc/mysql/my.cnf` : Pour exclure une base de la réplication :
~~~ ~~~{.ini}
[mysqld]
binlog-ignore-db = mysql binlog-ignore-db = mysql
~~~ ~~~
@ -61,7 +62,8 @@ Query OK, 0 rows affected (0.00 sec)
Pour éviter que la réplication démarre automatiquement au démarrage, on ajoutera dans la configuration : Pour éviter que la réplication démarre automatiquement au démarrage, on ajoutera dans la configuration :
~~~ ~~~{.ini}
[mysqld]
skip-slave-start skip-slave-start
~~~ ~~~
@ -75,9 +77,10 @@ mysql> SET sql_log_bin = 0;
~~~ ~~~
**Astuce 2** : Pour divers raisons (notamment la réplication de données déjà répliquées !), on devra activer l'option **Astuce 2** : Pour divers raisons (notamment la réplication de données déjà répliquées !), on devra activer l'option
suivante dans le my.cnf : suivante :
~~~ ~~~{.ini}
[mysqld]
log-slave-updates log-slave-updates
~~~ ~~~
@ -104,7 +107,7 @@ avec la commande `START SLAVE`. Voici quelques erreurs possibles
**Zapper l'erreur en cours** **Zapper l'erreur en cours**
~~~ ~~~
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE; mysql> SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE;
~~~ ~~~
**Fichier de clé incorrect** **Fichier de clé incorrect**
@ -113,7 +116,7 @@ SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE;
Incorrect key file for table './base/table.MYI'; try to repair it Incorrect key file for table './base/table.MYI'; try to repair it
~~~ ~~~
Il faut réparer la table concernée Il faut réparer la table concernée.
**Doublon sur clé unique** **Doublon sur clé unique**
@ -205,13 +208,13 @@ L'outil vérifie l'intégrité de la réplication en effectuant des requêtes de
La méthode la plus simple pour l'utiliser est d'autoriser le master à se connecter au slave (authentification MySQL). Ainsi, il s'occupe lui-même de faire le nécessaire pour identifier les erreurs. Il suffira donc de lancer la commande sans argument pour qu'il identifie les incohérences. On pourra réaliser un cron avec l'argument `-q` qui ne fait remonter que les erreurs. La méthode la plus simple pour l'utiliser est d'autoriser le master à se connecter au slave (authentification MySQL). Ainsi, il s'occupe lui-même de faire le nécessaire pour identifier les erreurs. Il suffira donc de lancer la commande sans argument pour qu'il identifie les incohérences. On pourra réaliser un cron avec l'argument `-q` qui ne fait remonter que les erreurs.
~~~ ~~~
MAILTO=jdoe@exemple.com 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.
Exemple : Exemple :