cluster haute disponibilité Linux MHA

Table des matières

concept

Principe du cluster de données haute disponibilité MHA

Configuration du cluster haute disponibilité

Connexion sans mot de passe


concept


Cluster haute disponibilité MHA

MHA (Master High Availability) est actuellement une solution relativement mature pour la haute disponibilité MySQL. Elle a été développée par la société japonaise DeNA Youshimaton (qui travaille maintenant chez Facebook). Il s'agit d'un excellent ensemble de solutions de basculement et de maître pour l'environnement haute disponibilité MySQL. Hautement disponible logiciel de Boost. Pendant le processus de basculement MySQL, MHA peut terminer automatiquement l'opération de basculement de la base de données dans un délai de 0 à 30 secondes, et pendant le processus de basculement, MHA peut garantir au maximum la cohérence des données pour atteindre une véritable haute disponibilité dans le sens.

Principe du cluster de données haute disponibilité MHA


MHA (Master High Availability) est une solution open source MySQL haute disponibilité. Il peut surveiller automatiquement l'état de la réplication maître-esclave MySQL et promouvoir automatiquement le serveur esclave vers le nouveau serveur maître en cas de panne du serveur maître, obtenant ainsi une disponibilité MySQL élevée. .

MHA fonctionne comme suit :

1. MHA installera un agent sur le serveur maître et le serveur esclave pour surveiller l'état de MySQL.

2. Lorsque le serveur maître tombe en panne, l'agent de surveillance de MHA détecte la panne du serveur maître et promeut le serveur esclave vers le nouveau serveur maître.

3. Avant de promouvoir le serveur esclave vers le nouveau serveur maître, MHA synchronisera automatiquement les données MySQL sur le serveur esclave avec les données sur le serveur maître pour garantir la cohérence des données.

4. Lorsque le nouveau serveur maître sera mis en ligne, MHA basculera automatiquement les autres serveurs esclaves vers le nouveau serveur maître pour obtenir une haute disponibilité de MySQL.

En bref, MHA atteint une haute disponibilité de MySQL en surveillant automatiquement l'état de la réplication maître-esclave MySQL et en basculant automatiquement vers un nouveau serveur maître en cas de panne du serveur maître.

Configuration du cluster haute disponibilité


Tout d'abord, pour une meilleure identification

Modifiez le nom d'utilisateur sur la ligne de commande :

hostnamectl set-hostname noeud1

bash : actualiser le nom d'hôte

Gestionnaire : [gestionnaire]                            

Serveur principal : [maître]                   

Serveur esclave : [esclave1]           

Serveur esclave : [esclave1]      

Connexion sans mot de passe


Utilisez vim pour ouvrir /etc/hosts sur quatre serveurs et écrire l'adresse IP du gestionnaire, du serveur maître et du serveur esclave ainsi que le nom d'hôte.

De cette façon, lorsque vous vous connectez via ssh, vous pouvez vous connecter directement en utilisant le nom d'hôte.

Par exemple : ssh noeud1

192.168.1.126 nœud1
192.168.1.125 nœud2
192.168.1.106 nœud3
192.168.1.105 nœud4

 

 

Les quatre machines virtuelles doivent générer des clés

 ssh-keygen -t rsa

 ssh-keygen -t rsa

Clé de copie de configuration sans mot de passe

[Les quatre serveurs doivent spécifier node1]

ssh-copy-id -i .ssh/id_rsa.pub root@node1

ssh-copy-id -i .ssh/id_rsa.pub root@node1

Envoyer le fichierauthorized_keysau du nœud1 au nœud2/3/4

[Réaliser une connexion sans mot de passe]

【Avis! ! ! Les nœuds 1, 2, 3 et 4 doivent tous s'authentifier mutuellement pour se connecter sans mot de passe.]

scp .ssh/authorized_keys root@node2:.ssh

Connectez-vous avec ssh node2 pour tester

scp .ssh/authorized_keys root@node3:.ssh

Connectez-vous avec ssh node3 pour tester

scp .ssh/authorized_keys root@node4:.ssh

Connectez-vous avec ssh node4 pour tester

Ouvrir le nœud2 [serveur principal]

Téléchargez la source epel-release dans node2

 miam -y installer epel-release

[Vous devez supprimer la source CentOS-Base.repo dans yum, puis l'installer]

Extrayez le package de code source MySQL préparé vers le système

Entrez la commande pour installer :

miam -y installer mariadb serveur mariadb

Accédez au répertoire pour trouver le package et installez-le :

rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm

vim ouvre le fichier de configuration MySQL

écrire

server-id = 1 [Spécifiez l'identifiant unique du serveur MySQL, utilisé pour distinguer les différents serveurs dans la réplication maître-esclave]

log-bin = master-log [Activer les journaux binaires pour enregistrer toutes les opérations de mise à jour de la base de données dans la réplication maître-esclave]

relay-log = relay-log [Spécifiez le nom du journal de relais, utilisé par le serveur esclave pour recevoir les mises à jour du serveur maître dans la réplication maître-esclave]

skip_name_resolve [La désactivation de la résolution DNS peut améliorer les performances du serveur MySQL]

[En général, ces paramètres de configuration sont utilisés pour configurer la réplication maître-esclave MySQL. `server-id`, `log-bin` et `relay-log` sont des paramètres obligatoires, tandis que `skip_name_resolve` est facultatif. , utilisé pour améliorer performance]

Pour écrire sous [MySQL]

[Après avoir écrit la configuration, enregistrez et quittez et entrez : systemctl restart mariadb pour redémarrer mysql]

Connectez-vous à MySQL et entrez :

accorder l'esclave de réplication sur *.* à 'slave'@'%' identifié par '123' ; 

[Autoriser les utilisateurs à utiliser la base de données]

[Cela signifie accorder à un utilisateur nommé « esclave » l'autorisation de répliquer en tant que serveur esclave sur toutes les bases de données et toutes les tables, et définir le mot de passe sur « 123 ». Le "%" signifie que l'utilisateur peut se connecter au serveur MySQL depuis n'importe quel hôte.

 accordez tout sur *.* à 'mha'@'%' identifié par '123' ;

[Autoriser les utilisateurs à être utilisés par le gestionnaire pour gérer le maître]

[Cela signifie accorder à l'utilisateur mha toutes les autorisations sur toutes les tables de toutes les bases de données et définir le mot de passe sur 123. % signifie que vous pouvez vous connecter au serveur MySQL à partir de n'importe quelle adresse IP]

saisissez la commande :

 afficher le statut du maître ;

[Afficher l'état du serveur principal de la base de données actuelle]

Entrez node3 [serveur esclave]

Faites glisser le package de code source préparé vers node3

Entrez la commande : installer mariadb

 miam -y installer mariadb mariadb-server epel-release

[MariaDB est un système de gestion de bases de données relationnelles open source, similaire à MySQL]

Entrez la commande pour installer :

 rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm

Puis vim entre dans le fichier de configuration principal de MySQL

vim /etc/my.cnf

Écrire:

server-id = 2 [Indique l'identifiant unique du serveur]                 

relay-log = relay-log [représente respectivement les noms de fichiers du journal de relais et du journal binaire]         

log-bin = master-log [représente respectivement les noms de fichiers du journal de relais et du journal binaire]         

read_only = ON [Indique si le serveur esclave est en lecture seule]               

relay_log_purge = 0 [Indique s'il faut nettoyer automatiquement les journaux de relais]           

skip_name_resolve [Indique s'il faut ignorer la résolution DNS]               

log_slave_updates = 1 [Indique s'il faut enregistrer les opérations de mise à jour effectuées depuis le serveur]

[Enregistrez, quittez et redémarrez MySQL].

Entrez la commande de redémarrage : systemctl restart mariadb

Pour écrire sous [MySQL]

Revenez à node2 [serveur maître] et entrez show master status ; affichez l'état de la base de données

Ouvrir le nœud 3 [serveur esclave 1]

Connectez-vous à MySQL

Entrée : Spécifiez le serveur [arrêtez l'esclave ; vous devez fermer le service avant de le spécifier]

remplacez le maître par master_host='192.168.1.125',master_user='slave',master_password='123',master_log_file='master-log.000003',master_log_pos=517 ;

[- `master_host` : Spécifiez l'adresse IP ou le nom d'hôte de la base de données master.

[- `master_user` : Spécifie le nom d'utilisateur utilisé pour la réplication.

[- `master_password` : Spécifie le mot de passe utilisé pour la réplication.

[- `master_log_file` : Spécifie le nom du fichier journal binaire de la base de données master.

[- `master_log_pos` : Spécifiez l'emplacement à partir duquel commencer la réplication du journal binaire de la base de données master.

 Après avoir spécifié le serveur principal, démarrez le service

 démarrer l'esclave ;

[Utilisé pour démarrer un serveur esclave (esclave) pour synchroniser les données avec le serveur maître (maître)]

 afficher l'état de l'esclave \G ;

[Utilisé pour afficher l'état du serveur esclave de réplication dans l'instance de base de données actuelle. Parmi eux, "\G" affiche les résultats dans un format plus lisible, chaque attribut occupant une ligne pour une visualisation facile. Cette commande peut être utilisée pour vérifier si la réplication maître-esclave fonctionne correctement, et pour vérifier le retard du serveur esclave, etc.]

accordez tout sur *.* à 'slave'@'%' identifié par '123' ;

[Autoriser l'utilisateur à être utilisé par le gestionnaire pour gérer l'esclave]

[Cela signifie accorder à l'utilisateur "esclave" toutes les autorisations sur toutes les bases de données et toutes les tables sur n'importe quel hôte, et définir le mot de passe sur "123". % signifie que n'importe quel hôte peut se connecter à la base de données]

Entrez node4 [serveur esclave 2]

Faites glisser le package de code source préparé dans node4

Entrez la commande pour installer :

 rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm

Entrez la commande : installer mariadb

 miam -y installer mariadb mariadb-server epel-release

[MariaDB est un système de gestion de bases de données relationnelles open source, similaire à MySQL]

vim ouvre le fichier de configuration MySQL

vim /etc/my.cnf

Écrire:

server-id = 3 [Définissez l'identifiant unique du serveur MySQL sur 3, qui est utilisé pour distinguer les différents serveurs dans la réplication maître-esclave]           

relay-log = relay-log [Définir l'emplacement de stockage et le préfixe du nom de fichier du journal de relais]         

log-bin = master-log [Activer les journaux binaires pour enregistrer toutes les opérations qui modifient la base de données pour la réplication maître-esclave et la récupération de données]         

read_only = ON [Configurer le serveur MySQL en mode lecture seule et interdire les opérations d'écriture dans la base de données]               

relay_log_purge = 0 [Désactiver la purge automatique des journaux de relais et exiger une purge manuelle]           

skip_name_resolve [Désactiver l'anti-résolution DNS pour accélérer la connexion]               

log_slave_updates = 1 [Configurer le serveur esclave pour qu'il enregistre également les opérations de modification reçues dans son propre journal binaire pour la réplication en cascade]

Puis enregistrez, quittez et redémarrez MySQL

systemctl redémarrer mariadb

 Pour écrire sous [MySQL]

Connectez-vous à MySQL

Entrée : Spécifiez le serveur principal [Arrêtez l'esclave d'arrêt de service avant de spécifier ;]

changez le maître en master_host='192.168.1.125',master_user='slave',master_password='123',master_log_file='master-log.000003',master_log_pos=529 ;

Après avoir spécifié, démarrez le service

démarrer l'esclave ;

[Utilisé pour démarrer un serveur esclave (esclave) pour synchroniser les données avec le serveur maître (maître)]

afficher l'état de l'esclave \G ;

[Utilisé pour afficher l'état du serveur esclave de réplication dans l'instance de base de données actuelle. Parmi eux, "\G" affiche les résultats dans un format plus lisible, chaque attribut occupant une ligne pour une visualisation facile. Cette commande peut être utilisée pour vérifier si la réplication maître-esclave fonctionne correctement, et pour vérifier le retard du serveur esclave, etc.]

accordez tout sur *.* à 'slave'@'%' identifié par '123' ;

[Autoriser l'utilisateur à être utilisé par le gestionnaire pour gérer l'esclave]

[Cela signifie accorder à l'utilisateur "esclave" toutes les autorisations sur toutes les bases de données et toutes les tables sur n'importe quel hôte, et définir le mot de passe sur "123". % signifie que n'importe quel hôte peut se connecter à la base de données]

Revenir au nœud 1 [Manager]

Extrayez le package de code source préparé dans le gestionnaire

Entrez respectivement les commandes : Installer MySQL

miam -y installer mariadb mariadb-server epel-release

miam -y installer mha4mysql-node-0.56-0.el6.noarch.rpm mha4mysql-manager-0.56-0.el6.noarch.rpm

Créer mkdir /etc/mha_master

vim entrez /etc/mha_master/mha.cnf

Écrire:

[serveur par défaut]

utilisateur = mha

mot de passe = 123

manager_workdir=/etc/mha_master/app1

manager_log=/etc/mha_master/manager.log

rép_travail_distant=/mydata/mha_master/app1

ssh_user=root

repl_user=esclave

repl_password=123

ping_intervalle=1

[serveur1]

nom d'hôte = 192.168.174.125 [IP principale]

ssh_port=22

candidat_master=1

[serveur2]

nom d'hôte = 192.168.174.106 [première adresse IP de l'esclave]

ssh_port=22

candidat_master=1

[serveur3]

nom d'hôte = 192.168.174.105 【Deuxième adresse IP esclave】

ssh_port=22

candidat_master=1

Après avoir écrit, enregistrez et quittez

entrer:

masterha_check_ssh --conf=/etc/mha_master/mha.cnf

Un écran s'affiche pour indiquer une détection réussie.

Entrez à nouveau : vérifiez si le cluster de réplication MySQL est OK

 masterha_check_repl --conf=/etc/mha_master/mha.cnf

Si une erreur survient lors de la dernière étape ! ! !

Vous pouvez saisir la commande :

accordez tout sur *.* à 'slave'@'%' identifié par '123' ;

Définissez à nouveau les autorisations utilisateur pour le serveur maître et le serveur esclave

Je suppose que tu aimes

Origine blog.csdn.net/2302_77750172/article/details/131209368
conseillé
Classement