diff --git a/HowtoMySQL/Replication.md b/HowtoMySQL/Replication.md index d94c1a57..79cfd007 100644 --- a/HowtoMySQL/Replication.md +++ b/HowtoMySQL/Replication.md @@ -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 : +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