From 8f290adb81b4517d6f8652a973bc4a4196f1af76 Mon Sep 17 00:00:00 2001 From: whirigoyen Date: Wed, 3 May 2023 11:46:43 +0200 Subject: [PATCH] Fusion des sections Master/Master --- HowtoMySQL/Replication.md | 55 ++++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 27 deletions(-) diff --git a/HowtoMySQL/Replication.md b/HowtoMySQL/Replication.md index ebb8f734..d8ce80b6 100644 --- a/HowtoMySQL/Replication.md +++ b/HowtoMySQL/Replication.md @@ -130,26 +130,6 @@ Voir la doc de [Mariabackup](mariabackup#mise-en-place-dune-réplication-esclave On peut récupérer la position GTID lors d'un backup fait par Mariabackup dans le fichier `xtrabackup_binlog_info` -### Activation d'une boucle de réplication MASTER/MASTER - -Lorsque l'on veux mettre en place une boucle de réplication MASTER/SLAVE des deux côtés, on commence a mettre en place une réplication MASTER/SLAVE classique, soit avec un mysqldump --master-data, soit avec Mariabackup comme indiqué plus haut. - -Une fois le MASTER/SLAVE synchronisé, sur le MASTER où l'on veux configuré un SLAVE, on vérifie que la variable gtid_slave_pos soit bien vide : - -~~~ -mysql> show variable like 'gtid_slave_pos'; -Empty set -~~~ - -Alors on peut mettre en place la partie SLAVE avec un CHANGE MASTER TO depuis le MASTER vers le SLAVE : - -~~~ -mysql> CHANGE MASTER TO - MASTER_HOST='192.168.0.33', - MASTER_USER='repl', - MASTER_PASSWORD='PASSWORD', - master_use_gtid=slave_pos; -~~~ ### Switcher réplication "ancien mode" vers GTID @@ -167,6 +147,7 @@ mysql> CHANGE MASTER TO mysql> START SLAVE; ~~~ + ## Configuration avancée @@ -188,6 +169,7 @@ master-password = PASSWORD > *Note* : En cas d'une bande passante réduite, l'option *slave_compressed_protocol* permet une compression des données côté MASTER et décompression des données côté SLAVE (cela consomme évidemment davantage de ressources CPU). + ### Configuration d'une réplication partielle Une manière d'avoir une réplication peut être de ne pas écrire toutes les requêtes dans les [binlogs](/HowtoMySQL#binlogs) sur le serveur MASTER via les options *binlog_do_db*/*binlog_ignore_db* mais ce n'est pas conseillé car les binlogs ont souvent d'autres utilités (vérifier les requêtes, ou servir pour d'autres serveurs SLAVE). @@ -230,19 +212,38 @@ replicate-wild-do-table = mysql.% replicate-wild-ignore-table = foo%.% ~~~ -### Réplication MASTER/MASTER -_Le but est d'activer deux réplications MASTER/SLAVE entre les deux serveurs concernés._ +### Activation d'une boucle de réplication MASTER/MASTER + +C'est une réplication MASTER/SLAVE des deux côtés. Utiliser ce type de réplication implique : -- Les INSERT ne sont pas immédiatement écrit car il y a un délai de quelques secondes. En cas, bannir un code qui ferait un INSERT puis un SELECT immédiat de la ligne insérée. -- Ne pas utiliser la directive `NOW()` en SQL. +* Les INSERT ne sont pas immédiatement écrit car il y a un délai de quelques secondes. En cas, bannir un code qui ferait un INSERT puis un SELECT immédiat de la ligne insérée. +* Ne pas utiliser la directive `NOW()` en SQL. -On conseille : +Étapes : + +* 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 (par exemple 0, 1, 2 etc.) +* Mettre en place une réplication MASTER/SLAVE classique, soit avec un mysqldump --master-data, soit avec Mariabackup comme indiqué plus haut. +* Une fois le MASTER/SLAVE synchronisé, sur le MASTER où l'on veut configurer un SLAVE, vérifier que la variable `gtid_slave_pos` est bien vide : + +~~~ +mysql> show variable like 'gtid_slave_pos'; +Empty set +~~~ + +* Puis, mettre en place la partie SLAVE avec un `CHANGE MASTER TO` depuis le MASTER vers le SLAVE : + +~~~ +mysql> CHANGE MASTER TO + MASTER_HOST='192.168.0.33', + MASTER_USER='repl', + MASTER_PASSWORD='PASSWORD', + master_use_gtid=slave_pos; +~~~ -- 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 (par exemple 0, 1, 2 etc.) ### Réplications en chaîne