Mettre en place la réplication Master/Slave sur MariaDB/Mysql

Bonjour,

suite à la lecture de plusieurs docs incomplètes ou obsolètes, voici une méthode pour mettre en place une réplication master/slave sur MariaDb ou Mysql.

 

Présentation : le master s’appelle master.monreseau.local, le slave s’appelle slave.monreseau.local. Le slave doit pouvoir communiquer avec le master sur le port mysql (par défaut 3306).

On suppose que les serveurs sont installés et fonctionnels sur les deux machines.

Sur le master

Editer le script de démarrage (par défaut /etc/init.d/mysql). Il existe une variable « other_args » dans lequel il faut ajouter les arguments suivants :

other_args=" --log-basename=master --log-bin --binlog-format=row --server_id=1 "

Le server id doit être unique.

Relancer le serveur mysql :

service mysql restart

Se connecter sur mysql :

mysql -u root -p

Créer un user qui va avoir les droits de réplication, et lui donner les droits :

create user 'replication'@'slave.monreseau.local' identified by 'MonNouveauPassword';
grant replication slave on *.* to 'replication'@'slave.monreseau.local' identified by 'MonNouveauPassword';

Bloquer les tables :

FLUSH TABLES WITH READ LOCK

Montrer le statut du master

SHOW MASTER STATUS

Devrait montrer quelque chose qui ressemble à ça :

MariaDB [(none)]> show master status;
+-------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-bin.000006 | 659 | | |
+-------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

Noter ces informations, et ouvrir une autre session (ne pas fermer la session mysql en cours).

Faire un dump de toutes les databases :

mysqldump --all-databases > dump.sql

Copier ce dump sur la machine slave.

Sur le slave

Editer le script de démarrage (par défaut /etc/init.d/mysql). Il existe une variable « other_args » dans lequel il faut ajouter les arguments suivants :

other_args=" --server_id=2 "

Importer les donées précédentes

mysql < dump.sql

Redémarrer le serveur

service mysql restart

Se connecter à mysql

mysql -u root -p

Régler pour synchroniser avec le master (penser à changer le password, le master log file et le master log pos en fonction des infos récupérées avant)

 CHANGE MASTER TO MASTER_HOST='master.monreseau.local', 
MASTER_USER='replication', 
MASTER_PASSWORD='MonNouveaupassword', 
MASTER_PORT=3306, 
MASTER_LOG_FILE='master-bin.000006',
  MASTER_LOG_POS=659,
  MASTER_CONNECT_RETRY=10;

Sur le master

Libérer les tables :

 UNLOCK TABLES;

Sur le slave :

Lancer la réplication

START SLAVE;


Tester la réplication :

SHOW SLAVE STATUS;
 

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.