Sources :

https://mariadb.com/kb/en/setting-up-replication/

https://www.yoan-jouve.com/mise-en-place-dune-replication-de-bases-de-donnees-mariadb-master-slave/

https://www.howtoforge.com/how-to-setup-mariadb-master-master-replication-on-debian-11/

https://linuxize.com/post/how-to-configure-mysql-master-slave-replication-on-debian-10/

Objectif de la mise en place d’une réplication

Pour des raisons de sécurité et de tolérance aux pannes, la configuration de la réplication maître et esclave MySQL / MariaDB est une voie à suivre … Dans une configuration maître et esclave, un serveur de base de données est le serveur principal ou le maître et les autres comme esclaves dans cette topologie …
Les modifications apportées sur le serveur maître sont répliquées sur les serveurs esclaves… la réplication est asynchrone et automatique.
Cette configuration est nécessaire dans les situations où vous souhaitez évoluer, fournir des sauvegardes en direct pour la reprise après sinistre et la tolérance aux pannes.

Prérequis

Lors de ce tutoriel, nous allons mettre en place une réplication de bases de données MariaDB (Master-Slave).

  1. Nous allons utiliser 2 machines virtuelle sous Debian 10 Buster, vous pouvez vous rendre sur le site d’osboxes.org : https://www.osboxes.org/debian/ et télécharger 2 machines virtuelles sous Debian 10 Buster :

    2. Un accès SSH aux deux machines est nécessaire.

Le schéma réseau dans cet exemple:

  • Serveur Maître : Nom « Server-WP-SQL-M » Adresse IP : 192.168.4.104
  • Serveur Esclave : Nom « Server-WP-SQL-S » Adresse IP 192.168.0.105

Note : La configuration IP pour vos machines est à adapter, c’est-à-dire que vos machines doivent être sur le même réseau, ou bien pouvoir communiquer entre elles à travers Internet.

I – Mise à jour des machines :

Note : Dans cette partie les manipulations sont à faire sur toutes les machines.

Premièrement, vous devez mettre à jour les paquets ainsi que les logiciels présents sur les machines :

$ sudo apt update && apt upgrade -y

II – Installation de MariaDB

Note : Dans cette partie les manipulations sont à faire sur toutes les machines

Nous allons dans un premier temps installer les services nécessaires pour notre serveur :

$ sudo apt-get install mariadb-server mariadb-client sudo -y
$ sudo systemctl start mysql.service && sudo systemctl enable mysql.service

$ sudo mysql_secure_installation
Enter current password for root (enter for none): Just press the Enter
	Set root password? [Y/n]: Y
	New password: Enter password
	Re-enter new password: Repeat password
	Remove anonymous users? [Y/n]: Y
	Disallow root login remotely? [Y/n]: Y
	Remove test database and access to it? [Y/n]:  Y
	Reload privilege tables now? [Y/n]:  Y

III – Configuration du serveur Maitre :

Note : Dans cette partie les manipulations sont à faire sur le serveur Maitre (192.168.4.104/24)

Dans un premier temps, nous configurons le serveur maitre et enregistrer le fichier de configuration :

$ sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

#
# These groups are read by MariaDB server.
# Use it for options that only the server (but not clients) should see
#
# See the examples of server my.cnf files in /usr/share/mysql

# this is read by the standalone daemon and embedded servers
[server]

# this is only for the mysqld standalone daemon
[mysqld]

#
# * Basic Settings
#
user                    = mysql
pid-file                = /run/mysqld/mysqld.pid
socket                  = /run/mysqld/mysqld.sock
port                    = 3306
basedir                 = /usr
datadir                 = /var/lib/mysql
tmpdir                  = /tmp
lc-messages-dir         = /usr/share/mysql
#skip-external-locking

# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.

log-bin
bind-address            = 192.168.4.104
server_id               = 1
log-basename            = master1

bind-address = 192.168.4.104

Nous vérifions que les lignes ci-dessous soient bien décommentées :
log_bin = /var/log/mysql/mysql-bin.log
server_id = 1

Nous redémarrons les services MariaDB :

$ sudo systemctl restart mariadb.service

Une fois les services redémarrés, nous allons configurer les accès pour que le serveur Esclave puisse se connecter :

$ sudo mysql -u root -p
CREATE USER 'replication_user'@'votre_ip_slave' IDENTIFIED BY 'nouveau_mot_de_passe';
GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'votre_ip_slave';
SHOW MASTER STATUS;

Note : Prenez une capture d’écran de la réponse à cette commande  (elle nous sera utile dans la suite de ce tutoriel)

Une fois les services redémarrés, nous allons configurer les accès pour que le serveur Esclave puisse se connecter :

IV – Configuration du serveur Esclave :

Note : Dans cette partie les manipulations sont à faire sur le serveur Esclave (192.168.4.105/24)

Dans un second temps, nous configurons le serveur esclave et enregistrer le fichier de configuration :

$ sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

#
# These groups are read by MariaDB server.
# Use it for options that only the server (but not clients) should see
#
# See the examples of server my.cnf files in /usr/share/mysql

# this is read by the standalone daemon and embedded servers
[server]

# this is only for the mysqld standalone daemon
[mysqld]

#
# * Basic Settings
#
user                    = mysql
pid-file                = /run/mysqld/mysqld.pid
socket                  = /run/mysqld/mysqld.sock
port                    = 3306
basedir                 = /usr
datadir                 = /var/lib/mysql
tmpdir                  = /tmp
lc-messages-dir         = /usr/share/mysql
#skip-external-locking

# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.

log-bin
bind-address            = 192.168.4.105
server_id               = 2

Note : Nous ajoutons les lignes ci-dessus :
log_bin = /var/log/mysql/mysql-bin.log
bind-address = 192.168.4.105
server_id = 2

Nous redémarrons les services MariaDB :

$ sudo systemctl restart mariadb.service

Une fois les services redémarrés, nous allons configurer le serveur Esclave avec le serveur Maitre :

STOP SLAVE;
CHANGE MASTER TO
	MASTER_HOST='votre_ip_master',
	MASTER_USER='replication_user',
	MASTER_PASSWORD='votre_mot_de_passe',
	MASTER_LOG_FILE='master1-bin.000001',
	MASTER_LOG_POS=votre_position;
START SLAVE;
SHOW SLAVE STATUS \G

Si tout se passe bien, ces deux lignes devraient s’afficher.

V – Test de notre réplication :

Note : Dans cette partie les manipulations sont à faire sur toutes les machines

Premièrement, sur le serveur Maitre, nous allons créer une base de donnée, table et insérer des données dedans :

CREATE DATABASE exampledb;
USE exampledb;
CREATE TABLE test_table (              
	ID INT NOT NULL AUTO_INCREMENT,              
	TEST VARCHAR(100) NOT NULL,              
	PRIMARY KEY (ID));
INSERT INTO test_table(TEST) VALUES ("Welcome");
SELECT ID,TEST FROM test_table;

Puis, nous nous rendons sur le serveur Esclave, pour vérifier le bon fonctionnement :

$ sudo mysql -u root -p
> SHOW DATABASES;
> USE exampledb;

SELECT ID,TEST FROM test_table;

Note : Nous pouvons conclure que notre réplication est bien fonctionnelle.

Si cela ne fonctionne pas, vous pouvez par exemple consulter cet article :

https://www.howtoforge.com/how-to-repair-mysql-replication

Print Friendly, PDF & Email

Leave a Reply

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Blue Captcha Image
Refresh

*

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