MariaDB
 sql >> Base de données >  >> RDS >> MariaDB

Comment configurer la réplication MariaDB (maître-esclave) dans CentOS/RHEL 7 et Debian 8/9

Même lorsque certains informaticiens entendent l'expression "Réplication de base de données », ils l'associent souvent au besoin d'avoir plusieurs copies de la même information pour éviter la perte de données en cas de panne matérielle ou de corruption de données. Bien que cela soit vrai dans une certaine mesure, la réplication de base de données va bien au-delà du concept commun de sauvegarde d'une base de données et de la disponibilité des données.

Parmi les autres avantages de la réplication de base de données dans une configuration maître-esclave, nous pouvons mentionner :

  1. Les sauvegardes peuvent être effectuées sur le serveur esclave sans affecter (et être affectées par) les opérations d'écriture dans le maître.
  2. Les opérations gourmandes en ressources (telles que l'analyse de données) peuvent être effectuées sur l'esclave sans influencer les performances du maître.

Dans cet article, nous expliquerons comment configurer la réplication maître-esclave dans MariaDB 10.1 . Contrairement à la réplication classique, MariaDB a introduit le concept de Global Transaction IDs (GTID ) dans v10.0 , qui permet de changer un esclave pour se connecter et répliquer facilement à partir d'un autre maître. De plus, l'état de l'esclave est enregistré de manière sécurisée (les mises à jour de l'état sont effectuées dans la même transaction que les mises à jour des données).

Si vous recherchez MySQL réplication sous CentOS/RHEL 6 , suivez ce guide Configuration de la réplication MySQL (maître-esclave) sur CentOS/RHEL 6

Installation de MariaDB 10.1 dans CentOS/RHEL 7 et Debian 8/9

Notre environnement de test se compose des machines suivantes (les deux sont CentOS 7 ):

Maître :192.168.0.18Esclave :192.168.0.19

Pour installer la dernière version de MariaDB, nous devrons ajouter leurs référentiels à nos serveurs. Si vous utilisez une ancienne version de MariaDB, par exemple 5.5, envisagez de passer à la dernière version 10.1 en utilisant l'article ci-dessous.

  1. Mettre à niveau MariaDB 5.5 vers MariaDB 10.1

Dans CentOS/RHEL

Créez un fichier nommé MariaDB.repo à l'intérieur de /etc/yum.repos.d avec le contenu suivant sur les deux Maître et Esclave systèmes :

# Liste de dépôts MariaDB 10.1 CentOS - créée le 23/01/2016 à 14h16 UTC# http://mariadb.org/mariadb/repositories/[mariadb]name =MariaDBbaseurl =http://yum.mariadb.org/ 10.1/centos7-amd64gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDBgpgcheck=1

Enregistrez le fichier et installez MariaDB sur les deux serveurs en utilisant yum :

# yum update &&yum install MariaDB-server MariaDB-client

Sous Debian/Ubuntu

Ajoutez la clé pour authentifier les packages et le référentiel MariaDB :

# apt-get install software-properties-common# apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db# add-apt-repository 'deb [arch=amd64,i386] http:/ /mirror.edatel.net.co/mariadb/repo/10.1/debian jessie principal'

Remarque  :Remplacer le nom de distribution et nom de code dans la ligne en surbrillance ci-dessus.

Installer en utilisant apt-get commande :

# apt-get update# apt-get install mariadb-server

Une fois que vous avez installé MariaDB, exécutez le mysql_secure_installation procédure sur le maître et l'esclave, configurons un exemple de base de données de test dans la machine maître.

Configuration d'un exemple de base de données MySQL sur le maître

Nous allons maintenant paramétrer dans le serveur maître les Employees base de données de https://github.com/datacharmer/test_db (qui fournit un ensemble de données de 4 millions d'enregistrements répartis sur six tables) en deux étapes simples :

Clonez le référentiel et utilisez-le pour importer l'exemple de base de données dans votre installation MariaDB :

# git clone https://github.com/datacharmer/test_db# cd test_db# mysql  

Configuration du serveur MySQL sur le maître

Pour configurer le maître, suivez ces étapes :

ÉTAPE 1 : Modifiez le /etc/my.cnf dossier. Sous le [mysqld] section, ajoutez les quatre lignes suivantes :

log-binserver_id=1replicate-do-db=employeesbind-address=192.168.0.18

et redémarrez MariaDB :

# systemctl redémarre mariadb

ÉTAPE 2 : Connectez-vous au serveur MariaDB en tant que root, créez l'utilisateur esclave et attribuez les droits nécessaires :

MariaDB [(aucun)]> CREATE USER 'slave'@'localhost' IDENTIFIED BY 'SlavePassword';MariaDB [(none)]> GRANT REPLICATION SLAVE ON *.* TO slave IDENTIFIED BY 'SlavePassword' WITH GRANT OPTION;MariaDB [(none)]> PRIVILÈGES FLUSH ;MariaDB [(aucun)]> FLUSH TABLES WITH READ LOCK;MariaDB [(none)]> AFFICHER LE STATUT MAÎTRE ;

Le dernier commande (AFFICHER L'ÉTAT DU MAÎTRE ) renvoie la position actuelle dans le journal binaire (les coordonnées exactes qui indiquent exactement à partir de quel point l'esclave doit commencer la réplication :

ÉTAPE 3 : Quittez l'invite MariaDB (avec exit; ) et utilisez la commande suivante pour prendre un instantané de la base de données des employés. Lorsque vous appuyez sur Entrée , vous serez invité à saisir le mot de passe pour root que vous avez configuré précédemment via mysql_secure_installation :

# mysqldump -u root -p employés> employés-dump.sql

Une fois le vidage terminé, connectez-vous à nouveau au serveur de base de données pour déverrouiller les tables, puis quittez :

MariaDB [(aucun)]> DÉVERROUILLER LES TABLES ;MariaDB [(aucun)]> quitter ;

ÉTAPE 4 : Copiez le dump vers l'esclave :

# scp employee-dump.sql [email protected]:/root/ 

ÉTAPE 5 : Exécutez le mysql_upgrade procédure pour mettre à jour les tables système (vous serez invité à saisir le mot de passe root MariaDB) :

# mysql_upgrade -u root -p

ÉTAPE 6 : Autoriser le service de base de données via le pare-feu :

# firewall-cmd --add-service=mysql# firewall-cmd --add-service=mysql --permanent# firewall-cmd --reload

Configurons maintenant l'esclave.

Configuration du serveur MySQL sur l'esclave

Pour configurer l'esclave, suivez ces étapes :

ÉTAPE 1 : Créez le compte pour effectuer les tâches de réplication. Connectez-vous au serveur MariaDB local avec :

# mysql -u root –p

et entrez le mot de passe que vous avez défini précédemment.

ÉTAPE 2 : Une fois connecté au serveur de base de données, créez l'utilisateur et une base de données vide, et accordez les autorisations :

MariaDB [(aucun)]> CREATE DATABASE employés ; MariaDB [(none)]> ACCORDER TOUS LES PRIVILÈGES AUX employés.* TO 'slave'@'localhost' WITH GRANT OPTION;MariaDB [(none)]> PRIVILÈGES FLUSH ;

ÉTAPE 3 : Quittez l'invite MariaDB et chargez le dump créé dans le serveur maître :

# mysql -u root -p employés  

ÉTAPE 4 : Modifiez le /etc/my.cnf fichier pour attribuer un ID de serveur à l'esclave sous le [mysqld] section. Notez qu'il doit s'agir d'un nombre entier différent de 1 , car nous avons utilisé 1 dans le maître :

server_id=2replicate-do-db=employés

Redémarrez le serveur de base de données :

# systemctl redémarre mariadb

ÉTAPE 5 : Exécutez le mysql_upgrade procédure pour mettre à jour les tables système (vous serez invité à saisir le mot de passe root MariaDB) :

# mysql_upgrade -u root -p

ÉTAPE 6 : Une fois le dump importé dans l'esclave, il ne nous reste que quelques étapes pour commencer la réplication. Connectez-vous à la base de données et exécutez les commandes suivantes dans l'invite MariaDB. Portez une attention particulière au MASTER_LOG_FILE et MASTER_LOG_POS variables, qui doivent correspondre aux valeurs renvoyées par SHOW MASTER STATUS à l'ÉTAPE 2 de "Configuration du maître" ci-dessus.

MariaDB [(aucun)]> CHANGE MASTER TO MASTER_HOST='192.168.0.18', MASTER_USER='slave', MASTER_PASSWORD='SlavePassword', MASTER_PORT=3306, MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=314, MASTER_CONNECT_RETRY=10, MASTER_USE_GTID=current_pos; 

ÉTAPE 7 : Démarrez l'esclave et vérifiez son état sans quitter l'invite MariaDB :

MariaDB [(aucun)]> START SLAVE;MariaDB [(none)]> AFFICHER LE STATUT ESCLAVE\G ;

Non pas que vous en ayez besoin maintenant, mais notez que vous pouvez arrêter l'esclave avec :

MariaDB [(aucun)]> ARRÊTER ESCLAVE ;

si le SHOW SLAVE STATUS\G; La commande renvoie toutes les erreurs. Utilisez ces erreurs pour résoudre les problèmes, puis exécutez START SLAVE; à tester à nouveau.

Tester la réplication de la base de données MySQL/MariaDB

Ajoutons un enregistrement aux employés table dans le serveur maître :

MariaDB [(aucun)]> INSERT INTO employés (no_emp, date_naissance, prénom, nom_famille, sexe, date_embauche) VALUES (500000, '1983-07-12', 'Dave', 'Null', 'M', '2014-12-12'); 

Vérifiez ensuite que cette modification a bien été répliquée dans l'esclave :

MariaDB [(aucun)]> UTILISER les employés ;MariaDB [(none)]> SELECT * FROM employés WHERE emp_no=500000;

Comme vous pouvez le constater, la réplication fonctionne correctement de maître à esclave.

Résumé

Dans cet article, nous avons expliqué comment installer la dernière version de MariaDB dans CentOS/RHEL 7 et Debian 8/9, et expliqué comment configurer la réplication maître-esclave avec les GTID. Pour plus d'informations, vous pouvez vous référer au Guide de réplication MariaDB, et n'hésitez pas à nous contacter en utilisant le formulaire ci-dessous si vous avez des questions ou des commentaires.