GNU/Linux >> Tutoriels Linux >  >> Linux

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

Il y a quelques jours, j'ai écrit un tutoriel sur la façon de faire de la réplication avec MariaDB (ou MySQL). Il s'agit d'une réplication à sens unique :du maître vers l'esclave; cela signifie que le serveur esclave reçoit les transactions du maître. Mais mon client a besoin d'une réplication bidirectionnelle, car nous ne savons pas quel serveur recevra la transaction et les mêmes données doivent se trouver sur les deux. Ici, je vais vous montrer comment configurer la réplication maître-maître avec MariaDB pour y parvenir.

Ma configuration

Juste au cas où vous auriez manqué l'article précédent, voici les fonctionnalités des machines virtuelles sur lesquelles j'exécute cette réplication.

  • OS :Debian teste "Bookworm"
  • Version MariaDB : 10.5.12
  • Maître1 :192.168.122.13
  • Maître2 :192.168.122.223

Configuration maître

Les deux maîtres obtiennent la même configuration, éditez /etc/mysql/mariadb.conf.d/50-server.cnf et remplacez les valeurs suivantes :

bind-address =X .ip.address>server-id =<X>report_host =masterX log_bin =/var/log/mysql/mysql-bin.logrelay_log =/var/lib/mysql/relay-binrelay_log_index =/var/lib/mysql/relay-bin.indexlog-slave-updatesauto_increment_increment=2auto_increment_offset=X 

Où X vaut 1 pour le premier maître et 2 pour le second.
Les valeurs d'auto-incrémentation signifient que dans les champs id-kind, l'un des maîtres obtiendra toujours des nombres pairs et l'autre obtiendra toujours des nombres impairs. Ceci afin d'éviter que le même numéro d'identification soit attribué aux deux maîtres en même temps.

Redémarrez maintenant le service mariadb et connectez-vous à mysql pour créer un utilisateur (esclavo signifie esclave en espagnol) avec des privilèges de réplication :

CRÉER L'UTILISATEUR 'esclavo1'@'ip.mysql.master.2' IDENTIFIÉ PAR 'SlavePass' ; ATTRIBUER L'ESCLAVE DE RÉPLICATION SUR *.* À 'esclavo1'@'ip.mysql.master.2' ;FLUSH PRIVILEGES ; 

Répétez l'opération sur les deux maîtres en modifiant les informations en conséquence (c'est-à-dire sur maître2, créez un utilisateur [email protected] ). Mais d'abord, récupérez un dump sql de votre premier master et chargez-le dans le second :

master1 :mysqldump -u root --all-databases -p --master-data> data.sqlmaster2 :mysql -uroot  

Obtenez maintenant des informations sur ce maître dont nous avons besoin pour activer le mode esclave sur l'autre hôte.

MariaDB [(aucun)]> AFFICHER L'ÉTAT DU MAÎTRE ;+------------------+----------+----- ---------+------------------+| Fichier | Poste | Binlog_Do_DB | Binlog_Ignore_DB |+------------------+----------+--------------+-- ----------------+| mysql-bin.000003 | 358 | | |+------------------+----------+-------------+--- ---------------+1 ligne dans le jeu (0.000 sec)STOP SLAVE ;

Configuration des esclaves

Il est maintenant temps de configurer le mode esclave sur les deux hôtes mariadb/mysql :

CHANGE MASTER TO MASTER_HOST='ip.mysql.master.X', MASTER_USER='esclavoX', MASTER_PASSWORD='SlavePass MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS =358';START SLAVE;

La vaule master_host est l'adresse IP de l'autre maître, la valeur master_user est l'utilisateur que vous avez créé sur l'autre maître, et enfin vous obtenez les valeurs master_log_file et master_log_post du show master sta commande tus.

Tout vérifier

Pour voir si j'étais capable d'activer la réplication maître-maître avec MariaDB, j'ai exécuté un test très simple :

J'ai créé une base de données sur un maître, puis une simple table (seulement 1 champ) et inséré quelques enregistrements. Ensuite, j'ai vérifié avec une sélection que les données apparaissent sur les deux hôtes. Enfin, j'ai ajouté une colonne incrémentielle automatique d'id sur un hôte et inséré quelques données supplémentaires pour voir comment cela apparaît :

Juste pour ajouter plus de confusion à ces captures d'écran :j'ai ajouté la configuration auto_increment (incrément et décalage) à my.cnf pendant ce test et non depuis le début, car je ne le savais pas avant d'avoir commencé les tests.

Quoi qu'il en soit, c'est ainsi que j'ai activé la réplication maître-maître avec MariaDB, c'est-à-dire également la réplication esclave-esclave. Ou maître-esclave et réplication esclave-maître, nommez-le.

Je pense que la prochaine étape logique est de rechercher et d'utiliser un Galera Cluster.


Linux
  1. Répliquer une base de données maître à l'aide de MariaDB 10 sur Debian 8

  2. Comment configurer la réplication MySQL maître-maître

  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 installer WordPress avec LEMP sur Ubuntu 20.04

Comment configurer la réplication MariaDB sur CentOS Linux

Réplication maître-esclave avec MariaDB

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

Comment installer OpenLiteSpeed ​​Web Server avec MariaDB et PHP

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

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