GNU/Linux >> Tutoriels Linux >  >> Linux

Réplication maître-esclave avec MariaDB

C'est ainsi que j'ai configuré la réplication maître-esclave avec MariaDB. Étant donné que MariaDB est un fork de MySQL, vous devez suivre les mêmes étapes.

Ma configuration

Je suppose que vous avez déjà deux serveurs Maria/MySQL en cours d'exécution. Ce sont les caractéristiques du mien :

  • OS :Debian teste "Bookworm"
  • Version MariaDB : 10.5.12

Je travaille avec deux machines virtuelles, pour créer l'esclave, j'ai dupliqué la machine virtuelle maître.

  • Maître :192.168.122.13
  • Esclave :192.168.122.223

Si vous n'avez pas de base de données maria ou mysql, ici sur unixcop nous avons quelques tutoriels, aussi ici, ici ou ici.

Maître

Comme je l'ai déjà dit, je suppose que vous avez déjà un maria ou mysql en cours d'exécution. Nous devons faire une configuration sur le maître, puis sur l'hôte esclave.

Modifier /etc/mysql/mariadb.conf.d/50-server.cnf (ou le fichier approprié dans votre configuration), et modifiez les lignes suivantes :

bind-address = <your.master.host.ip>
server-id=1

Redémarrez MariaDB et créez un utilisateur avec des privilèges de réplication :

MariaDB [(none)]> CREATE USER 'esclavo'@'192.168.122.223' IDENTIFIED BY 'SlavePass' ;
MariaDB [(none)]> GRANT REPLICATION SLAVE ON *.* TO 'esclavo'@'192.168.122.223';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> FLUSH TABLES WITH READ LOCK;

Choisissez n'importe quel nom d'utilisateur et mot de passe que vous voulez, esclavo signifie esclave sur l'espagnol. Définissez l'adresse IP de votre esclave MariaDB. Ensuite, vous pouvez voir le statut avec SHOW MASTER STATUS.

La dernière étape (presque, nous y reviendrons plus tard) sur le maître consiste à copier toutes les données du serveur maître vers l'esclave. Créons un dump avec :

root@my1:~# mysqldump -u root --all-databases -p  --master-data > data.sql

Esclave

Sur le serveur esclave, changez d'abord le fichier de configuration /etc/mysql/mariadb.conf.d/50-server.cnf dans les mêmes lignes que le maître :

bind-address = <your.slave.host.ip> 
server-id=1

Redémarrez MariaDB et chargez le dump depuis le master avec :

root@my2:/home/gonz# mysql -uroot < data.sql

Ensuite, arrêtez l'esclave, définissez l'hôte maître et démarrez l'esclave avec les commandes suivantes :

root@my2:/home/gonz# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 41
Server version: 10.5.12-MariaDB-1-log Debian 11

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> stop slave;
MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='192.168.122.13', MASTER_USER='esclavo',MASTER_PASSWORD='SlavePass';
MariaDB [(none)]> START SLAVE;

N'oubliez pas de changer l'adresse IP, l'utilisateur et le mot de passe de l'hôte en vos valeurs si vous ne faites que copier et coller ces commandes ;).

Test et correction

Ça devrait le faire. Si tout fonctionne comme prévu, vous devriez avoir une réplication maître-esclave avec MariaDB.

Vous pouvez maintenant créer une base de données sur le maître et cette base de données devrait apparaître automatiquement dans l'esclave. Mais n'a pas fonctionné pour moi. J'ai créé une base de données sur le maître avec :

MariaDB [(none)]> CREATE DATABASE somedatabase;

Et il n'a pas été répliqué sur l'esclave. Pour voir pourquoi, j'ai couru dans le serveur esclave :

MariaDB [(none)]> show slave status\G ;

Lorsque j'ai recherché cette erreur sur Google, ils ont suggéré de supprimer l'utilisateur esclavo et les privilèges de rinçage. Ceci sur le serveur esclave, arrêtez également l'esclave avant de supprimer l'utilisateur et démarrez l'esclave après avoir vidé les privilèges :

MariaDB [(none)]> stop slave;
MariaDB [(none)]> drop user 'esclavo'@'192.168.122.223';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> start slave;

Et cela m'a été corrigé, comme vous pouvez le voir sur la capture d'écran, il existe maintenant une base de données sur le serveur esclave. Et c'est vide. Je suis ensuite retourné au maître pour créer une table et la remplir avec des données :

La dernière étape consiste à vérifier sur l'esclave si la table a été créée et qu'il y a des données à l'intérieur :

Juste pour être sûr, vous pouvez vérifier l'état de l'esclave une fois de plus (ou à tout autre moment dans le futur si quelque chose ne va pas).

Et enfin, j'ai configuré la réplication maître-esclave avec MariaDB.


Linux
  1. Comment configurer la réplication maître-esclave MySQL

  2. Comment configurer la réplication MySQL maître-esclave sur Ubuntu 18.04

  3. Configuration de la réplication maître-maître avec MySQL sur Debian 8 (Jessie)

  4. Comment remplacer MySQL par MariaDB sur CentOS 6

  5. Comment configurer la réplication maître-esclave MariaDB sur Ubuntu 18.04

Réplication maître-maître avec MariaDB

Comment configurer la réplication MariaDB Master-Slave sur CentOS 7

Comment installer OpenLiteSpeed ​​Web Server avec MariaDB et PHP

Comment configurer la réplication maître-esclave MySQL sur RHEL 7 ?

Comment gérer les boîtes aux lettres avec RoundCube sur CentOS 7

8 étapes pour installer MirthConnect avec MySQL / MariaDB sur Linux