19
0
Fork 0

Activation d'une réplication MASTER/SLAVE avec GTID

This commit is contained in:
emorino 2021-07-27 10:48:06 +02:00
parent 8614bce0db
commit 347cfbccce
1 changed files with 52 additions and 1 deletions

View File

@ -38,7 +38,7 @@ mysql> SET sql_log_bin = 0;
> *Note* : cela nécessite le droit MySQL _SUPER_
## Activation d'une réplication MASTER/SLAVE
## Activation d'une réplication MASTER/SLAVE avec la position des binlogs (legacy mode)
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),
@ -93,6 +93,57 @@ Si dump compréssé :
# zcat mabase.sql.gz | mysql --init-command="SET SQL_LOG_BIN = 0;"
~~~
## Activation d'une réplication MASTER/SLAVE avec GTID
### Mise en place d'un réplica depuis un dump
On peux connaitre la position du GTID lorsque l'on fait un dump --master-data avec mysqldump, il nous donne le fichier binaire et sa position.
Pour connaitre la valeur GTID avec le fichier binaire et sa position, il faut utilisé la fonction BINLOG_GTID_POS, comme ceci, si le fichier binaire est "master-bin.000001" et sa position "600" par exemple :
~~~
mysql> SELECT BINLOG_GTID_POS("master-bin.000001", 600);
0-1-2
~~~
On peux donc mettre la valeur GTID "0-1-2" sur la variable *gtid_slave_pos*, puis démarré la réplication avec un CHANGE MASTER TO, en positionnant la variable *master_use_gtid* sur *slave_pos* :
~~~
mysql> SET GLOBAL gtid_slave_pos = "0-1-2";
~~~
~~~
mysql> CHANGE MASTER TO
MASTER_HOST='192.168.0.33',
MASTER_USER='repl',
MASTER_PASSWORD='PASSWORD',
master_use_gtid=slave_pos;
~~~
### Activation d'une réplication MASTER/SLAVE avec Mariabackup
Voir la doc de Mariabackup ici : <https://wiki.evolix.org/HowtoMySQL/mariabackup#mise-en-place-dune-r%C3%A9plication-esclave-avec-mariabackup>
On peux récupéré 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 vaec un mysqldump --master-data, soit avec Mariabackup comme indiqué plsu haut.
Un 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;
~~~
## Configuration avancée
<https://dev.mysql.com/doc/refman/5.6/en/replication-options-slave.html>