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` 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 ### Switcher réplication "ancien mode" vers GTID
@ -167,6 +147,7 @@ mysql> CHANGE MASTER TO
mysql> START SLAVE; mysql> START SLAVE;
~~~ ~~~
## Configuration avancée ## Configuration avancée
<https://dev.mysql.com/doc/refman/5.6/en/replication-options-slave.html> <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). > *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 ### 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). 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%.% 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 : 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. * 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. * 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 ### Réplications en chaîne