MariaDB est un système de gestion de base de données relationnelle gratuit et open source, et est l'une des options les plus populaires. La réplication est le processus de copie de données d'un serveur de base de données maître vers un autre serveur de base de données esclave. Dans la topologie maître-esclave, un serveur agit en tant que maître et les autres serveurs agissent en tant qu'esclaves. Dans la réplication maître-esclave, les données sont répliquées dans un seul sens. Si vous modifiez les données sur le serveur esclave, elles ne seront pas répliquées sur le serveur maître. Si le serveur maître tombe en panne, vous pouvez toujours récupérer vos données à partir du serveur esclave.
Vous pouvez utiliser la réplication maître-esclave MariaDB à plusieurs fins ; certains d'entre eux sont répertoriés ci-dessous :
- Évolutivité et haute disponibilité
- Sauvegardes
- Analytique
- Équilibrage de charge
- Amélioration des performances de la base de données
- Basculement simplifié
- Sécurité des données
Dans ce tutoriel, nous allons vous montrer comment configurer la réplication maître-esclave MariaDB sur le serveur Ubuntu 18.04.
Prérequis
- Deux nouveaux VPS Ubuntu 18.04 sur la plate-forme cloud Atlantic.Net.
- Un mot de passe racine statique configuré sur les deux serveurs.
Étape 1 - Créer un serveur cloud Atlantic.Net
Tout d'abord, connectez-vous à votre serveur Atlantic.Net Cloud. Créez un nouveau serveur en choisissant Ubuntu 18.04 comme système d'exploitation avec au moins 2 Go de RAM. Connectez-vous à votre serveur cloud via SSH et connectez-vous à l'aide des informations d'identification mises en évidence en haut de la page.
Une fois que vous êtes connecté à votre serveur Ubuntu 18.04, exécutez la commande suivante pour mettre à jour votre système de base avec les derniers packages disponibles.
apt-get update -y
Étape 2 - Installer MariaDB sur les deux serveurs
Tout d'abord, vous devrez installer MariaDB sur les deux serveurs. Vous pouvez l'installer en exécutant la commande suivante :
apt-get install mariadb-server mariadb-client -y
Après avoir installé MariaDB, exécutez la commande suivante pour sécuriser l'installation de MariaDB :
mysql_secure_installation
Répondez à toutes les questions comme indiqué ci-dessous :
Enter current password for root (enter for none): Press Enter Set root password? [Y/n] Y New password: Re-enter new 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
À ce stade, vous avez installé et sécurisé les deux serveurs MariaDB.
Étape 3 - Configurer le serveur maître
Ensuite, vous devrez activer la journalisation binaire et la réplication sur le serveur maître. Pour cela, ouvrez le fichier /etc/mysql/mariadb.conf.d/50-server.cnf avec votre éditeur de texte préféré :
nano /etc/mysql/mariadb.conf.d/50-server.cnf
Recherchez la ligne bind-address et remplacez la valeur par 0.0.0.0 pour autoriser les connexions entrantes.
bind-address = 0.0.0.0
Ajoutez ensuite les lignes suivantes à la fin du fichier :
server-id = 1 log_bin = /var/log/mysql/mysql-bin.log log_bin_index =/var/log/mysql/mysql-bin.log.index relay_log = /var/log/mysql/mysql-relay-bin relay_log_index = /var/log/mysql/mysql-relay-bin.index
Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, redémarrez le service MariaDB pour mettre en œuvre les modifications :
systemctl restart mariadb
Ensuite, vous devrez créer un utilisateur de réplication. Le serveur esclave utilisera cet utilisateur pour se connecter au serveur maître et demander des journaux binaires.
Tout d'abord, connectez-vous au shell MariaDB avec la commande suivante :
mysql -u root -p
Indiquez votre mot de passe root lorsque vous y êtes invité, puis créez un utilisateur avec la commande suivante :
CREATE USER 'replication'@'%' identified by 'your-password';
Ensuite, accordez le privilège esclave de réplication à cet utilisateur avec la commande suivante :
GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%';
Ensuite, videz les privilèges avec la commande suivante :
FLUSH PRIVILEGES;
Ensuite, vérifiez l'état du serveur maître avec la commande suivante :
show master status;
Vous devriez obtenir le résultat suivant :
+------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 313 | | | +------------------+----------+--------------+------------------+
Ensuite, quittez le shell MariaDB avec la commande suivante :
EXIT;
Remarque :Veuillez vous souvenir du fichier et Position détails de la sortie ci-dessus. Vous aurez besoin de ces valeurs lors de la configuration du serveur esclave.
Étape 4 - Configurer le serveur esclave
Ensuite, connectez-vous au serveur esclave et ouvrez le fichier /etc/mysql/mariadb.conf.d/50-server.cnf :
nano /etc/mysql/mariadb.conf.d/50-server.cnf
Trouvez la ligne bind-address et changez la valeur en 0.0.0.0 comme indiqué ci-dessous :
bind-address = 0.0.0.0
Ajoutez ensuite les lignes suivantes à la fin du fichier :
server-id = 2 log_bin = /var/log/mysql/mysql-bin.log log_bin_index =/var/log/mysql/mysql-bin.log.index relay_log = /var/log/mysql/mysql-relay-bin relay_log_index = /var/log/mysql/mysql-relay-bin.index
Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, redémarrez le service MariaDB pour mettre en œuvre les modifications :
systemctl restart mariadb
Ensuite, connectez-vous au shell MariaDB avec la commande suivante :
mysql -u root -p
Fournissez votre mot de passe root lorsque vous y êtes invité, puis arrêtez les threads esclaves comme indiqué ci-dessous :
stop slave;
Ensuite, exécutez la commande suivante pour configurer l'esclave pour répliquer le maître :
CHANGE MASTER TO MASTER_HOST = 'your-master-host-ip', MASTER_USER = 'replication', MASTER_PASSWORD = 'your-password', MASTER_LOG_FILE = 'mysql-bin.000001', MASTER_LOG_POS = 313;
Ensuite, démarrez les threads esclaves et quittez le shell MariaDB comme indiqué ci-dessous :
start slave; exit;
Remarque :Modifiez la commande ci-dessus pour utiliser l'adresse IP de votre hôte maître et votre mot de passe que vous avez créés lors des étapes précédentes. Veuillez utiliser le nom du fichier journal et les valeurs de position que vous avez obtenus du serveur maître.
Étape 5 :Tester la réplication de la base de données
À ce stade, vous avez configuré la réplication maître-esclave. Il est maintenant temps de tester la réplication entre maître et esclave.
Sur le serveur maître, connectez-vous au shell MariaDB avec la commande suivante :
mysql -u root -p
Fournissez votre mot de passe root lorsque vous y êtes invité, puis créez une base de données avec le nom mydb comme indiqué ci-dessous :
create database mydb;
Ensuite, créez une table avec le nom "products" dans la base de données mydb :
use mydb; CREATE TABLE products(product_id INT NOT NULL AUTO_INCREMENT,product_name VARCHAR(100) NOT NULL,product_manufacturer VARCHAR(40) NOT NULL,submission_date DATE,PRIMARY KEY ( product_id ));
Ensuite, exécutez la commande suivante pour vérifier la table :
SHOW TABLES;
Sortie :
+----------------+ | Tables_in_mydb | +----------------+ | products | +----------------+
Sur le serveur esclave, connectez-vous au shell MariaDB avec la commande suivante :
mysql -u root -p
Fournissez votre mot de passe root lorsque vous y êtes invité, puis vérifiez le statut de l'esclave :
SHOW SLAVE STATUS \G
Vous devriez voir le résultat suivant :
*************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: your-master-host-ip Master_User: replication Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000001 Read_Master_Log_Pos: 721 Relay_Log_File: mysql-relay-bin.000002 Relay_Log_Pos: 945 Relay_Master_Log_File: mysql-bin.000001 Slave_IO_Running: Yes Slave_SQL_Running: Yes
Ensuite, exécutez la commande suivante pour vérifier si la base de données est répliquée :
show databases;
Vous devriez voir la base de données mydb que vous avez créée sur le serveur maître :
+--------------------+ | Database | +--------------------+ | information_schema | | mydb | | mysql | | performance_schema | +--------------------+
Ensuite, vérifiez la table des produits que vous avez créée sur le serveur maître :
MariaDB [(none)]> use mydb; MariaDB [mydb]> show tables;
Vous devriez voir le tableau des produits dans la sortie suivante :
+----------------+ | Tables_in_mydb | +----------------+ | products | +----------------+
Toutes nos félicitations! Votre réplication maître-esclave MariaDB fonctionne comme prévu. Vous pouvez maintenant facilement récupérer votre base de données en cas de panne. Commencez dès aujourd'hui avec la réplication maître-esclave MariaDB avec un package d'hébergement VPS d'Atlantic.Net.