Réplication avec MariaDB
Notions théoriques
La réplication est un processus par lequel :
- les données d'une base de données MariaDB sont copiées (répliquées) d'un serveur MariaDB (appelé le serveur principal)
- vers un ou plusieurs serveurs MariaDB (appelés serveurs secondaires).
Historiquement, dans le cadre de la réplication de bases de données, les termes maître et esclave étaient couramment utilisés pour désigner respectivement le serveur principal (qui envoie les données) et le serveur secondaire (qui reçoit les données).
Cependant, ces termes ont été progressivement abandonnés pour des raisons éthiques et inclusives.
Aujourd'hui, MariaDB et d'autres systèmes de bases de données utilisent des termes plus neutres et descriptifs tels que principal/secondaire ou source/réplica pour désigner ces rôles.
Nous utilisons les termes serveur principal et serveur secondaire pour refléter cette évolution.
La réplication peut être utilisée :
- pour des raisons de performance (répartir la charge de lecture entre plusieurs serveurs),
- pour des raisons de sécurité (avoir une copie des données en cas de panne du serveur principal)
- ou pour des raisons de disponibilité des données (avoir les données disponibles à plusieurs endroits).
La réplication n'est pas une sauvegarde.
Les 4 étapes pour configurer une réplication
Pour mettre en place une réplication MariaDB entre un serveur principal et un serveur secondaire, voici les 4 étapes à suivre :
- Configurer le serveur principal : Activer le journal binaire et créer un utilisateur de réplication.
- Créer une copie des données : Verrouiller le serveur principal, exporter les données et noter la position du journal binaire.
- Configurer le serveur secondaire : Activer le journal de relais, importer les données et configurer la connexion au serveur principal.
- Démarrer la réplication : Lancer le processus de réplication sur le serveur secondaire.
Exemple pratique
Exemple d'une réplication entre 2 serveurs MariaDB :
- Serveur principal : IP
192.168.1.10
- Serveur secondaire : IP
192.168.1.20
1. Configuration du serveur principal
-
Modifier le fichier de configuration de MariaDB :
Ouvrez le fichier/etc/mysql/mariadb.conf.d/50-server.cnf
et ajoutez ou modifiez les lignes suivantes :log_bin = /var/log/mysql/mariadb-bin
log_bin_index = /var/log/mysql/mariadb-bin.index
server-id = 1Le
server-id
doit être unique pour chaque serveur impliqué dans la réplication. -
Créer le dossier pour les journaux binaires :
Si le dossier/var/log/mysql
n'existe pas, créez-le avec la commande suivante :sudo mkdir -p /var/log/mysql
-
Redémarrer MariaDB :
Appliquez la configuration en redémarrant le service MariaDB :sudo service mariadb restart
-
Créer un utilisateur de réplication :
Connectez-vous à MariaDB et créez un utilisateur pour la réplication :sudo mysql
CREATE USER 'replication'@'192.168.1.20' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'replication'@'192.168.1.20'; -
Afficher les informations du journal binaire :
Exécutez la commande suivante pour obtenir les valeurs deMASTER_LOG_FILE
etMASTER_LOG_POS
:SHOW MASTER STATUS;
Notez ces valeurs, elles seront utilisées pour configurer le serveur secondaire.
2. Créer une copie des données
-
Placer un verrou en lecture sur le serveur principal :
Cela garantit que les données ne changent pas pendant la copie :FLUSH TABLES WITH READ LOCK;
Cette commande vide toutes les tables en mémoire sur le disque et place un verrou en lecture global.
-
Obtenir la position actuelle du journal binaire :
Exécutez à nouveau la commande suivante pour noter les valeurs deMASTER_LOG_FILE
etMASTER_LOG_POS
:SHOW MASTER STATUS;
-
Exporter les données du serveur principal :
Utilisez la commandemysqldump
pour créer une sauvegarde de toutes les bases de données :mysqldump -u root -p --all-databases > dump.sql
-
Libérer le verrou en lecture :
Une fois la copie terminée, libérez le verrou :UNLOCK TABLES;
-
Transférer le fichier de sauvegarde vers le serveur secondaire :
Utilisez la commandescp
pour copier le fichier exporté (dump.sql
) vers le serveur secondaire :scp dump.sql user@192.168.1.20:/path/to/destination
3. Configuration du serveur secondaire
-
Modifier le fichier de configuration de MariaDB :
Ouvrez le fichier/etc/mysql/mariadb.conf.d/50-server.cnf
et ajoutez ou modifiez les lignes suivantes :relay_log = /var/log/mysql/mariadb-relay-bin
relay_log_index = /var/log/mysql/mariadb-relay-bin.index
server-id = 2Le
server-id
doit être différent de celui du serveur principal. -
Redémarrer MariaDB :
Appliquez la configuration en redémarrant le service MariaDB :sudo service mariadb restart
-
Importer les données copiées depuis le serveur principal :
Chargez le fichier de sauvegarde transféré (dump.sql
) dans le serveur secondaire :mysql -u root -p < /path/to/destination/dump.sql
-
Configurer la réplication :
Utilisez les informations obtenues avecSHOW MASTER STATUS
sur le serveur principal pour configurer la réplication :CHANGE MASTER TO
MASTER_HOST='192.168.1.10',
MASTER_USER='replication',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=120;Remplacez
MASTER_LOG_FILE
etMASTER_LOG_POS
par les valeurs obtenues précédemment.
4. Démarrer la réplication
Avant de démarrer la réplication d'une base de données, il est important que les données soit identiques des 2 côtés (serveur principal et serveur secondaire).
-
Lancer la réplication :
Exécutez la commande suivante sur le serveur secondaire :START SLAVE;
-
Vérifier le statut de la réplication :
Assurez-vous que la réplication fonctionne correctement en exécutant :SHOW SLAVE STATUS\G;
Vérifiez que les valeurs
Slave_IO_Running
etSlave_SQL_Running
sont définies surYes
.
Test de mémorisation/compréhension
Atelier sur la réplication
Mise en place de la réplication entre 2 serveurs MariaDB
Dans cet atelier, vous allez configurer une réplication entre deux serveurs MariaDB en créant deux machines virtuelles sous Debian dans Proxmox. Vous suivrez les étapes pour configurer un serveur principal et un serveur secondaire, et vérifierez que la réplication fonctionne correctement.
Objectifs
- Créer deux machines virtuelles sous Debian dans Proxmox.
- Installer MariaDB sur les deux machines.
- Configurer un serveur principal et un serveur secondaire pour la réplication.
- Vérifier que les données insérées sur le serveur principal sont bien répliquées sur le serveur secondaire.
Résultats attendus
À la fin de cet atelier, vous aurez configuré une réplication fonctionnelle entre deux serveurs MariaDB. Vous serez capable de :
- Créer et configurer des machines virtuelles sous Debian.
- Installer et configurer MariaDB pour la réplication.
- Vérifier que les données sont correctement répliquées entre les deux serveurs.
Vérification de la réplication
Pensez à vérifier que la réplication fonctionne correctement. Vous pouvez le faire en ajoutant des données dans une table existante sur le serveur principal, puis en vérifiant si ces modifications sont répliquées sur le serveur secondaire.
-
Sur le serveur principal, insérez une ligne dans une table existante. Par exemple, supposons qu'il existe une base de données
test_replication
avec une tabletable_test
:-- Sur le serveur principal
USE test_replication;
INSERT INTO table_test (data) VALUES ('Donnée répliquée'); -
Sur le serveur secondaire, vérifiez si la nouvelle ligne a été répliquée :
-- Sur le serveur secondaire
USE test_replication;
SELECT * FROM table_test;Si la ligne avec la valeur
'Donnée répliquée'
apparaît dans les résultats de la commandeSELECT
, cela signifie que la réplication fonctionne correctement.
Rédiger 2 documentations (PDF)
Préparer 2 documentations techniques : (une présentation et un tutoriel) au format PDF.
1. Présentation de la réplication
Expliquer en détails le principe de la réplication, ses avantages et ses inconvénients.
Vous devez :
- Définir ce qu'est la réplication
- Discuter des avantages de la réplication
- Discuter des inconvénients de la réplication
- Présenter les différents types de réplication
2. Tutoriel sur la réplication d'un serveur SQL
Créer un tutoriel détaillé, avec des copies d'écran, sur la mise en place d'une réplication d'un serveur SQL, en prenant l'exemple de MariaDB avec 2 serveurs sous Linux Debian.
Vous devez :
- Expliquer les prérequis nécessaires pour la mise en place de la réplication
- Fournir un guide pas à pas sur la mise en place de la réplication sur 2 serveurs Debian accessibles en SSH (toutes les étapes suivies) avec des copies d'écrans
- Faire une démonstration du bon fonctionnement de la réplication
(fournir une capture d'écran de la commande
SHOW SLAVE STATUS\G
sur le serveur secondaire) - Expliquer comment vérifier que la réplication fonctionne correctement (fournir une capture d'écran qui montre les données répliquées sur le serveur secondaire après insertion sur le serveur principal)