MySQL est un open-source et l’un des systèmes de gestion de bases de données relationnelles les plus largement utilisés. La configuration d’un serveur de sauvegarde MySQL séparé est essentielle en cas de panne, car le serveur de sauvegarde contient tout le nécessaire pour une récupération réussie.
Les fonctionnalités de réplication de MySQL vous permettent de conserver plusieurs copies des données MySQL. Toutes les données du serveur maître seront automatiquement synchronisées avec le serveur esclave. Si votre serveur maître échoue, vous pouvez promouvoir un esclave en maître pour les opérations de validation.
Conditions préalables
- Deux serveurs exécutant Ubuntu 20.04.
- Un mot de passe root est configuré sur les deux serveurs.
Pour ce tutoriel, nous utiliserons la configuration suivante :
Serveur | Adresse IP |
---|---|
Maître | 45.58.41.25 |
trimer | 45.58.40.60 |
Installer MySQL 8
Tout d’abord, vous devrez installer le serveur MySQL 8 sur les deux serveurs. Exécutez la commande suivante pour installer le serveur MySQL 8 sur les deux serveurs.
apt install mysql-server -y
Après avoir installé le serveur MySQL, vous devrez définir un mot de passe root MySQL sur les deux serveurs. Exécutez la commande suivante pour définir un mot de passe root :
mysql_secure_installation
Il vous sera demandé les éléments suivants :
Press y|Y for Yes, any other key for No:
Appuyez simplement sur Entrer pour définir un mot de passe root :
Please set the password for root here.
New password:
Re-enter new password:
Définissez votre mot de passe root MySQL et répondez aux questions restantes comme indiqué ci-dessous :
Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
Configurer le serveur maître
Tout d’abord, vous devrez modifier le fichier de configuration par défaut de MySQL sur le serveur maître pour autoriser l’accès à distance et activer le journal binaire.
nano /etc/mysql/mysql.conf.d/mysqld.cnf
Ajoutez ou modifiez les lignes suivantes :
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
bind-address = 0.0.0.0
log_error = /var/log/mysql/error.log
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
max_binlog_size = 500M
slow_query_log = 1
Enregistrez et fermez le fichier, puis redémarrez le service MySQL pour appliquer les modifications.
systemctl restart mysql
Créer un utilisateur de réplication sur le serveur maître
Ensuite, vous devrez créer un utilisateur de réplication sur le serveur maître pour gérer la réplication. Pour cela, connectez-vous au shell MySQL avec la commande suivante :
mysql -u root -p
Fournissez votre mot de passe root MySQL, puis exécutez la commande suivante pour créer un utilisateur de réplication :
mysql> CREATE USER slaveuser@45.58.40.60 IDENTIFIED WITH mysql_native_password BY 'password';
Ensuite, accordez les privilèges REPLICATION SLAVE à l’utilisateur de réplication :
mysql> grant replication slave on *.* to slaveuser@45.58.40.60;
Ensuite, videz les privilèges pour appliquer les modifications :
mysql> flush privileges;
Ensuite, vérifiez les privilèges à l’aide de la commande suivante :
mysql> show grants for slaveuser@45.58.40.60;
Exemple de sortie :
+-------------------------------------------------------------+
| Grants for slaveuser@45.58.40.60 |
+-------------------------------------------------------------+
| GRANT REPLICATION SLAVE ON *.* TO `slaveuser`@`45.58.40.60` |
+-------------------------------------------------------------+
Ensuite, quittez le shell MySQL avec la commande suivante
mysql> exit;
Noter: Remplace le 45.58.40.60 avec l’adresse IP du Trimer serveur.
Configurer le serveur esclave
Ensuite, vous devrez éditer le fichier de configuration principal de MySQL et apporter quelques modifications :
nano /etc/mysql/mysql.conf.d/mysqld.cnf
Ajoutez ou modifiez les lignes suivantes :
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
bind-address = 0.0.0.0
datadir = /var/lib/mysql
log_bin = /var/log/mysql/mysql-bin.log
server-id = 2
read_only = 1
max_binlog_size = 500M
slow_query_log = 1
Enregistrez et fermez le fichier, puis redémarrez le service MySQL pour appliquer les modifications :
systemctl restart mysql
Initialiser la réplication sur le serveur esclave
Ensuite, vous devrez démarrer le processus de réplication sur le serveur esclave.
Tout d’abord, connectez-vous au shell MySQL sur le serveur maître avec la commande suivante :
mysql -u root -p
Ensuite, vérifiez l’état du maître avec la commande suivante :
mysql> show master statusG
Exemple de sortie :
*************************** 1. row ***************************
File: mysql-bin.000002
Position: 1047
Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set:
1 row in set (0.00 sec)
À partir de la sortie ci-dessus, notez le fichier journal principal et le numéro de position.
Ensuite, allez sur le serveur esclave et connectez-vous au shell MySQL :
mysql -u root -p
Ensuite, utilisez les informations obtenues du serveur maître et configurez le serveur esclave avec la commande suivante :
mysql> CHANGE MASTER TO MASTER_HOST='45.58.41.25', MASTER_USER='slaveuser', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=1047;
Ensuite, démarrez l’esclave à l’aide de la commande suivante :
Noter: remplacer IP 45.58.41.25 avec l’adresse IP du Maître serveur.
mysql> start slave;
Ensuite, vérifiez l’état de l’esclave avec la commande suivante :
mysql> show slave statusG
Vous devriez obtenir la sortie suivante :
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 45.58.41.25
Master_User: slaveuser
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000002
Read_Master_Log_Pos: 1047
Relay_Log_File: slave-relay-bin.000002
Relay_Log_Pos: 324
Relay_Master_Log_File: mysql-bin.000002
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Vérifier la réplication maître-esclave
À ce stade, la réplication MySQL maître-esclave est configurée. Maintenant, il est temps de tester si la réplication fonctionne ou non.
Tout d’abord, allez sur le serveur maître et créez une base de données avec la commande suivante :
mysql -u root -p
mysql> create database replicadb;
Ensuite, vérifiez toutes les bases de données à l’aide de la commande suivante :
mysql> show databases;
Exemple de sortie :
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| replicadb |
| sys |
+--------------------+
Ensuite, quittez le shell MySQL :