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

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

Même quand certains, les gens entendent la phrase «Réplication de la base de données«, Ils l'associent souvent à la nécessité d'avoir plusieurs copies des mêmes informations pour éviter la perte de données en cas de défaillance matérielle ou de corruption des données. Bien que cela soit vrai dans une certaine mesure, il y a beaucoup plus à répliquer la base de données que le concept commun de sauvegarde d'une base de données et de disponibilité des données.

MariaDB Master-Slave Replication in Centos / Rhel 7 et Debian 8/9

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

  1. Les sauvegardes peuvent être effectuées sur le serveur d'esclaves sans affecter (et être affecté par) les opérations d'écriture dans le maître.
  2. Des opérations à forte intensité de ressources (comme l'analyse des données) peuvent être effectuées sur l'esclave sans influencer les performances du maître.

Dans cet article, nous expliquerons comment mettre en place une réplication maître-esclave dans Mariadb 10.1. Contrairement à la réplication classique, Mariadb a introduit le concept de ID de transaction globale (Grides) dans v10.0, qui permet de changer un esclave pour se connecter et se reproduire à partir d'un autre maître. En plus de cela, l'état de l'esclave est enregistré de manière à se marier (les mises à jour de l'État sont effectuées dans la même transaction que les mises à jour des données).

Si vous cherchez Mysql réplication sous Centos / Rhel 6, Suivez ce guide Configuration de la réplication MySQL (Master-Slave) sur Centos / Rhel 6

Installation de MariaDB 10.1 à 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.18 esclaves: 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 Say 5.5, envisagez de passer au dernier 10.1 version en utilisant l'article ci-dessous.

  1. Upgrde mariadb 5.5 à Mariadb 10.1

Dans Centos / Rhel

Créer un fichier nommé Mariadb.repo à l'intérieur / etc / yum.se soustraire.d avec le contenu suivant sur les deux Maître et Esclave Systèmes:

# Mariadb 10.1 Liste du référentiel CentOS - Créé 2016-01-23 14:16 UTC # http: // mariaDB.org / mariaDB / Repositories / [MariaDb] name = Mariadb Bustanl = http: // yum.mariadb.org / 10.1 / Centos7-AMD64 gpgkey = https: // yum.mariadb.org / rpm-gpg-key-mariadb gpgcheck = 1 

Enregistrez le fichier et installez MARIADB sur les deux serveurs à l'aide de YUM:

# yum Update && yum installer Mariadb-Server MariaDB-Client 

Dans Debian / Ubuntu

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

# apt-get install logiciel-properties-common # apt-key adv --rev-keys - keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db # add-att-repository 'deb [arch = amd64, i386] http: // miroir.Edatel.filet.CO / MARIADB / REPO / 10.1/Debian Jessie principal' 

Note: Remplacer la distribution nom et nom de code Dans la ligne ci-dessus surlignée.

Installer en utilisant apt-get commande:

# Mise à jour apt-get # apt-get install mariaDb-server 
Vérifiez la version MariaDB sur Master Slave-Server

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

Configuration d'un exemple de base de données MySQL sur Master

Nous allons maintenant configurer dans le serveur maître le Employés 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:

Clone le référentiel et l'utiliser 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 < employees.sql 

Configuration du serveur MySQL sur Master

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

ÉTAPE 1: Modifier le / etc / mon.CNF déposer. Sous le [mysqld] Section, ajouter les quatre lignes suivantes:

log-bin server_id = 1 réplique-do-db = employés bind-address = 192.168.0.18 

et redémarrer Mariadb:

# systemctl redémarrer mariaDB 

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

MariaDb [(aucun)]> Créer l'utilisateur «esclave» @ «localhost» identifié par «slavepassword»; MariaDb [(aucun)]> Slave de réplication de la subvention sur *.* À esclave identifié par «slavepassword» avec l'option de subvention; MariaDb [(aucun)]> Privilèges de rinçage; MariaDb [(aucun)]> Tables à chasse d'eau avec verrouillage de lecture; MariaDb [(aucun)]> Afficher le statut maître; 

Le dernier commande (Afficher le statut maître) Renvoie la position actuelle dans le journal binaire (les coordonnées exactes qui indiquent exactement à quel point l'esclave devrait commencer à se répliquer à partir de:

Configurer MySQL Master pour la réplication

ÉTAPE 3: Quitter l'invite mariadb (avec sortie;) et utiliser la commande suivante pour prendre un instantané de la base de données des employés. Quand tu frappes Entrer, Vous serez invité à taper le mot de passe pour root que vous avez configuré plus tôt 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 quitter:

MariaDb [(aucun)]> Déverrouiller les tables; MariaDb [(aucun)]> sortie; 

ÉTAPE 4: Copiez le dépotoir dans l'esclave:

# Employés SCP-Dump.sql [e-mail protégé]: / root / 

Étape 5: Courir le mysql_upgrade Procédure pour mettre à niveau les tables système (vous serez invité à entrer le mot de passe racine MariADB):

# mysql_upgrade -u root -p 

Étape 6: Autorisez 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 

Maintenant, configurons l'esclave.

Configuration du serveur MySQL sur 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 configuré plus tôt.

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

MariaDb [(aucun)]> Créer des employés de la base de données; MariaDb [(aucun)]> Accorder tous les privilèges sur les employés.* À «esclave» @ «localhost» avec une option de subvention; MariaDb [(aucun)]> Privilèges de rinçage; 

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

# MySQL -U Root -P Employés < employees-dump.sql 

ÉTAPE 4: Modifier le / etc / mon.CNF fichier pour affecter un serveur IDENTIFIANT à l'esclave sous le [mysqld] section. Notez qu'il doit être un entier différent de celui 1, Comme nous avons utilisé 1 Dans le maître:

server_id = 2 réplique-do-db = employés 

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

# systemctl redémarrer mariaDB 

Étape 5: Courir le mysql_upgrade Procédure pour mettre à niveau les tables système (vous serez invité à entrer le mot de passe racine MariADB):

# mysql_upgrade -u root -p 

Étape 6: Une fois le vidage importé dans l'esclave, nous ne sommes que quelques étapes pour commencer à reproduire. Connectez-vous à la base de données et exécutez les commandes suivantes dans l'invite MariaDB. Portez une attention particulière à la Maître_log_file et Maître_log_pos variables, qui devraient correspondre aux valeurs renvoyées par Afficher le statut maître à l'étape 2 de «Configuration du maître» ci-dessus.

MariaDb [(aucun)]> Changer de maître en master_host = "192.168.0.18 ", master_user =" esclave ", maître_password =" slavepassword ", master_port = 3306, maître_log_file =" maître-bin.000001 ", master_log_pos = 314, maître_connect_retry = 10, master_use_gtid = current_pos; 

Étape 7: Démarrez l'esclave et vérifiez son statut sans sortir de l'invite MariaDB:

MariaDb [(aucun)]> Commencer l'esclave; MariaDb [(aucun)]> Afficher le statut d'esclave \ g; 

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

MariaDb [(aucun)]> Arrêter l'esclave; 

si la Afficher le statut d'esclave \ g; la commande renvoie toutes les erreurs. Utilisez ces erreurs pour dépanner puis exécuter Commencer l'esclave; pour tester à nouveau.

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

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

MariaDb [(aucun)]> Insérer dans les employés (EMP_NO, naissance_Date, First_name, Last_name, Gender, Hire_Date) Valeurs (500000, '1983-07-12', 'Dave', 'NULL', 'M', '2014-12-12'); 

Vérifiez ensuite que ce changement a été reproduit dans l'esclave:

MariaDb [(aucun)]> Utiliser les employés; MariaDb [(aucun)]> Sélectionnez * dans les employés où EMP_NO = 500000; 
Vérifiez la réplication de la base de données MARIADB MySQL

Comme vous pouvez le voir, la réplication fonctionne correctement du maître à l'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 a discuté de la façon de mettre en place une réplication maître-esclave avec GTIDS. Pour plus d'informations, vous souhaiterez peut-être 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.