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 :
1 |
other_args=" --log-basename=master --log-bin --binlog-format=row --server_id=1 " |
Le server id doit être unique.
Relancer le serveur mysql :
1 |
service mysql restart |
Se connecter sur mysql :
1 |
mysql -u root -p |
Créer un user qui va avoir les droits de réplication, et lui donner les droits :
1 |
create user 'replication'@'slave.monreseau.local' identified by 'MonNouveauPassword'; |
1 |
grant replication slave on *.* to 'replication'@'slave.monreseau.local' identified by 'MonNouveauPassword'; |
Bloquer les tables :
1 |
FLUSH TABLES WITH READ LOCK |
Montrer le statut du master
1 |
SHOW MASTER STATUS |
Devrait montrer quelque chose qui ressemble à ça :
1 2 3 4 5 6 7 |
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 :
1 |
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 :
1 |
other_args=" --server_id=2 " |
Importer les donées précédentes
1 |
mysql < dump.sql |
Redémarrer le serveur
1 |
service mysql restart |
Se connecter à mysql
1 |
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)
1 2 3 4 5 6 7 |
<span class="n">CHANGE</span> <span class="n">MASTER</span> <span class="k">TO</span> <span class="n">MASTER_HOST</span><span class="o">=</span><span class="s1">'master.monreseau.local'</span><span class="p">,</span> <span class="n">MASTER_USER</span><span class="o">=</span><span class="s1">'replication'</span><span class="p">,</span> <span class="n">MASTER_PASSWORD</span><span class="o">=</span><span class="s1">'MonNouveaupassword'</span><span class="p">,</span> <span class="n">MASTER_PORT</span><span class="o">=</span><span class="mi">3306</span><span class="p">,</span> <span class="n">MASTER_LOG_FILE</span><span class="o">=</span><span class="s1">'</span>master-bin.000006<span class="s1">'</span><span class="p">, </span> <span class="n">MASTER_LOG_POS</span><span class="o">=659</span><span class="p">, </span> <span class="n">MASTER_CONNECT_RETRY</span><span class="o">=</span><span class="mi">10</span><span class="p">;</span> |
Sur le master
Libérer les tables :
1 |
UNLOCK TABLES; |
Sur le slave :
Lancer la réplication
1 |
<span class="k">START</span> <span class="n">SLAVE</span><span class="p">;</span> |
Tester la réplication :
1 |
SHOW SLAVE STATUS; |
1 |
<span class="p"> </span> |