Fusion des sections Master/Master

This commit is contained in:
whirigoyen 2023-05-03 11:46:43 +02:00
parent 4c0b83a540
commit 8f290adb81

View file

@ -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
<https://dev.mysql.com/doc/refman/5.6/en/replication-options-slave.html>
@ -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