22
0
Fork 0

Ajout Mise en place d’une réplication esclave avec Mariabackup

This commit is contained in:
emorino 2019-05-06 18:12:03 +02:00
parent bf44fb3de4
commit a452a1cb30
1 changed files with 111 additions and 1 deletions

View File

@ -203,5 +203,115 @@ Nous pouvons désormais restaurer le backup de la même manière que cité plus
# mariabackup --copy-back --target-dir=/home/mariabackup/
~~~
Assurez-vous que les droit de _/var/lib/mysql/ soit correct.
Assurez-vous que les droits de _/var/lib/mysql/_ soit correct.
## Mise en place d'une réplication esclave avec Mariabackup
Mariabackup facilite la configuration d'un esclave de réplication à l'aide d'une sauvegarde complète.
La première étape consiste simplement à prendre et à préparer une nouvelle sauvegarde complète d'un serveur de base de données dans la topologie de réplication.
Si le serveur de base de données source est le maître de réplication souhaité, il n'est pas nécessaire d'ajouter d'autres options lors de la sauvegarde complète.
~~~
# mariabackup --backup --target-dir=/home/mariabackup/
~~~
Si le serveur de base de données source est un esclave de réplication nous devrions ajouter l'option _--slave-info_ et éventuellement l'option _--safe-slave-backup_ :
~~~
# mariabackup --backup --slave-info --safe-slave-backup --target-dir=/home/mariabackup/
~~~
Et puis nous préparons la sauvegarde comme vous le feriez normalement :
~~~
# mariabackup --prepare --target-dir=/home/mariabackup/
~~~
### Copier le backup sur le nouveau serveur esclave
Une fois que le backup est terminé et préparé, nous pouvons le copier sur le nouveau serveur esclave :
~~~
rsync -avrP /home/mariabackup/ root@sql2:/home/mariabackup
~~~
### Restauration du backup sur le nouveau serveur esclave
À ce stade, nous pouvons restaurer la sauvegarde dans le datadir, comme vous le feriez normalement :
~~~
# mariabackup --copy-back --target-dir=/home/mariabackup/
~~~
_Note_ : il faut s'assurer que aucun processus mysql ne tourne sur le slave, et que le datadir soit vide_
Et ajuster les droits des fichiers, si nécessaire:
~~~
# chown -R mysql:mysql /var/lib/mysql/
~~~
### Configuration du nouveau serveur slave
Il faut maintenant configuré correctement notre serveur slave, comme nous ne faisons d'habitude, c'est à dire, création de l'utilisateur mysql 'repl' et configuration du _server-id_ :
~~~
MariaDB > CREATE USER 'repl'@'sql2' IDENTIFIED BY 'ReplPassWord';
MariaDB > GRANT REPLICATION SLAVE ON *.* TO 'repl'@'sql2';
~~~
~~~
vim /etc/mysql/mariadb.conf.d/zzz-evolinux-custom.cnf
server-id = 3
~~~
### Démarrer la réplication sur le nouveau serveur slave
À ce stade, nous devons obtenir les coordonnées de réplication du maître à partir du répertoire de sauvegarde d'origine.
Si nous prenons la sauvegarde sur le maître, les coordonnées seront dans le fichier _xtrabackup_binlog_info_.
Si nous prenons la sauvegarde sur un autre esclave et si nous fournissons l'option _--slave-info_, alors les coordonnées seront dans le fichier _xtrabackup_slave_info_.
~~~
cat /home/mariabackup/xtrabackup_binlog_info
mysql-bin.000002 327 0-1-2
~~~
Mariabackup vide les coordonnées de réplication sous deux formes: les coordonnées **GTID**, le fichier journal binaire et les coordonnées de position, comme celles que vous verriez normalement à partir de la sortie **SHOW MASTER STATUS**.
Nous pouvons choisir le jeu de coordonnées à utiliser pour configurer la réplication.
Quelles que soient les coordonnées utilisées, nous devrons configurer la connexion principale à l'aide de **CHANGE MASTER TO**, puis démarrer les threads de réplication avec **START SLAVE**
* Par GTID :
Si nous voulons utiliser des GTID, nous devons d'abord définir gtid_slave_pos sur les coordonnées GTID extraites de _xtrabackup_binlog_info_ dans le répertoire de sauvegarde, puis _MASTER_USE_GTID = slave_pos_ dans la commande _CHANGE MASTER TO_, comme ceci :
~~~
SET GLOBAL gtid_slave_pos = "0-1-2";
CHANGE MASTER TO
MASTER_HOST="sql1",
MASTER_PORT=3307,
MASTER_USER="repl",
MASTER_PASSWORD="ReplPassWord",
MASTER_USE_GTID=slave_pos;
START SLAVE;
~~~
* Par fichier et position :
Si nous voulons utiliser les binlogs et les coordonnées de position, nous définirions _MASTER_LOG_FILE_ et _MASTER_LOG_POS_ dans la commande _CHANGE MASTER TO_ avec les coordonnées du binlog extraite de _/home/mariabackup/xtrabackup_binlog_info_ ou de _xtrabackup_slave_info_ dans le répertoire de sauvegarde, selon que la la sauvegarde a été effectuée auprès du maître ou d'un esclave du maître :
~~~
CHANGE MASTER TO
MASTER_HOST="sql1",
MASTER_PORT=3307,
MASTER_USER="repl",
MASTER_PASSWORD="ReplPassWord",
MASTER_LOG_FILE='mysql-bin.000002',
MASTER_LOG_POS=327;
START SLAVE;
~~~