Bienvenue sur un autre blog. Cette fois, je suis ici pour vous montrer comment configurer le cluster percona XtraDB. Ok, alors qu'est-ce que percona XtraDB ? XtraDB est une solution de clustering MySQL. Elle garantit une haute disponibilité, évite les temps d'arrêt et les pertes de données et offre une évolutivité linéaire pour un environnement en pleine croissance. Lorsque vous exécutez une requête, elle est exécutée localement sur le nœud. Toutes les données sont disponibles localement, pas besoin d'accès à distance. Une bonne solution pour faire évoluer une charge de travail de lecture. Vous pouvez placer des requêtes de lecture sur n'importe lequel des nœuds. Une fois que vous avez installé percona XtraDB, vous n'avez pas besoin d'installer MySQL séparément, XtraDB l'obtiendra à partir du référentiel percona et vous pourrez préparer le cluster après avoir parcouru cet article.
prérequis :
Pour configurer un cluster percona XtraDB sur des serveurs Linux, nous avons besoin de trois serveurs, les informations sont les suivantes :
serveur percona1 :192.168.56.110
serveur percona2 :192.168.56.113
Serveur percona3 :192.168.56.114
Système d'exploitation :CentOS 7
vous pouvez également opter pour deux serveurs mais le document officiel recommande un nombre impair de serveurs. par exemple 3,5,7 et ainsi de suite. n'optez pas pour un nombre pair de nœuds, ils l'appellent split-brain. Un split-brain est un état dans lequel les nœuds perdent le contact les uns avec les autres, puis tentent tous les deux de prendre le contrôle des ressources partagées ou de fournir simultanément le service de cluster
REMARQUE :Nous avons besoin d'un accès root sur le nœud où nous allons installer Percona XtraDB Cluster
(soit connecté en tant qu'utilisateur avec des privilèges root, soit capable d'exécuter des commandes avec Sudo
Prévérifications :
Ajoutez ci-dessous les entrées dans votre fichier /etc/hosts ——> sur tous les serveurs (percona1, percona2, percona3)
192.168.56.110 percona1.localdomain percona1
192.168.56.113 percona2.localdomain percona2
192.168.56.114 percona3.localdomain percona3
Ouvrir les ports du pare-feu :
Nous devons ouvrir les ports ci-dessous sur tous les serveurs (percona1, percona2, percona3)
3306
4444
4567
4568
firewall-cmd --zone=public --add-service=mysql --permanent
firewall-cmd --zone=public --add-port=3306/tcp --permanentfirewall-cmd --zone=public --add-port=4567/tcp --permanentfirewall-cmd --zone=public - -add-port=4568/tcp --permanentfirewall-cmd --zone=public --add-port=4444/tcp --permanentfirewall-cmd --zone=public --add-port=4567/udp --permanentfirewall- cmd --reloadfirewall-cmd --list-all
[[email protected] ~]# firewall-cmd --list-allpublic (active)target :defaulticmp-block-inversion :nointerfaces :enp0s3 enp0s8sources :services :ssh dhcpv6-client mysqlports :3306/tcp 4567/tcp 4568/tcp 4444/tcp 4567/udpprotocols :masquerade :noforward-ports :sources-ports :icmp-blocks :rich rules
Désactiver SELinux :——->sur tous les serveurs (percona1, percona2, percona3)
[[email protected] ~]# setenforce 0
Cela mettra SELinux en mode permissif pour la session en cours mais nous devons le désactiver de façon permanente. />vi /etc/sysconfig/selinux
SELINUX=disabled
Tous les serveurs doivent être accessibles les uns aux autres, afin de vérifier le ping d'accessibilité de chaque serveur.
Instll ci-dessous prereq RPM :——-> sur tous les serveurs (percona1, percona2, percona3)
epel-release
libev
socat
[[email protected] ~]# yum -y install epel-release Installé :epel-release.noarch 0:7-11[[email protected] yum.repos.d]# yum -y install libev Installé :libev.x86_64 0:4.15-7.el7[[email protected] Desktop]# yum -y install socat Installed:socat.x86_64 0:1.7.3.2-2.el7
Ajouter un référentiel Percona :——->sur tous les serveurs (percona1, percona2, percona3)
Nous allons maintenant ajouter le référentiel percona dans les trois serveurs (percona1, percona2, percona3) :
[[email protected] ~]# sudo yum -y install https://repo.percona.com/yum/percona-release-latest.noarch.rpmInstalled:percona-release.noarch 0:1.0-13 Complete !
Installez Percona-XtraDB-Cluster :——-> sur tous les serveurs (percona1, percona2, percona3)
[[email protected] ~]# yum install -y Percona-XtraDB-Cluster-57Plug-ins chargés :le plus rapidemiroir, langpacksChargement des vitesses du miroir à partir du fichier hôte mis en cache... Installé :Percona-XtraDB-Cluster-57.x86_64 0:5.7 .27-31.39.1.el7 Percona-XtraDB-Cluster-shared-57.x86_64 0:5.7.27-31.39.1.el7 Percona-XtraDB-Cluster-shared-compat-57.x86_64 0:5.7.27-31.39 .1.el7Dépendance installée :Percona-XtraDB-Cluster-client-57.x86_64 0:5.7.27-31.39.1.el7 Percona-XtraDB-Cluster-server-57.x86_64 0:5.7.27-31.39.1.el7 percona-xtrabackup-24.x86_64 0:2.4.17-1.el7 perl-DBD-MySQL.x86_64 0:4.023-6.el7 perl-Digest.noarch 0:1.17-245.el7 perl-Digest-MD5.x86_64 0 :2.52-3.el7 qpress.x86_64 0:11-1.el7Remplacé :mariadb-libs.x86_64 1:5.5.60-1.el7_5Complet !
Laissez vérifier que Percona XtraDB est installé ou non.
[[email protected] ~]# yum search Percona-XtraDBREMARQUE : Jusqu'ici, toutes les étapes ci-dessus doivent être effectuées sur tous les serveurs (percona1, percona2, percona3)
Configuration des nœuds pour la réplication en écriture
SUR Percona1 :
Laisser démarrer le serveur MySQL et changer le mot de passe root uniquement sur le serveur percona1
[[email protected] ~]# systemctl start mysql[[email protected] ~]# grep password /var/log/mysqld.log2019-12-11T10:35:12.135133Z 1 [Remarque] Un mot de passe temporaire est généré pour [email protected] :hJ(l8ySe>f>ENote :copiez le mot de passe "hJ(l8ySe>f>E" nous allons changer ce mot de passe :[[email protected] ~]# mysql_secure_installation --- ----> sur tous les serveurs (percona1, percona2, percona3)Sécurisation du déploiement du serveur MySQL.Entrez le mot de passe pour l'utilisateur root :le mot de passe existant pour le compte utilisateur root a expiré. Veuillez définir un nouveau mot de passe.Nouveau mot de passe :entrez-le à nouveau nouveau mot de passe :VALIDATE PASSWORD PLUGIN peut être utilisé pour tester les mots de passe et améliorer la sécurité. Il vérifie la force du mot de passe et permet aux utilisateurs de définir uniquement les mots de passe suffisamment sécurisés. Souhaitez-vous configurer le plug-in VALIDATE PASSWORD ?Appuyez sur y|Y pour Oui, n'importe lequel autre clé pour Non :Utilisation du mot de passe existant pour root.Modifier le mot de passe pour root ? ((Appuyez sur y|Y pour Oui, toute autre clé pour Non) : ... ignoré.Par défaut, une installation MySQL ation a un utilisateur anonyme, permettant à quiconque de se connecter à MySQL sans avoir à créer un compte utilisateur pour lui. Ceci est uniquement destiné à renforcer et à rendre l'installation un peu plus fluide. Vous devez les supprimer avant de passer à un environnement de production. Supprimer les utilisateurs anonymes ? (Appuyez sur y|Y pour Oui, n'importe quelle autre touche pour Non) :yesSuccess. Normally, root ne devrait être autorisé à se connecter qu'à partir de 'localhost'. Cela garantit que personne ne peut deviner le mot de passe root à partir du réseau. Interdire la connexion root à distance ? (Appuyez sur y|Y pour Oui, n'importe quelle autre touche pour Non) :ouiSuccès. Par défaut, MySQL est livré avec une base de données nommée "test" à laquelle tout le monde peut accéder. Ceci est également destiné uniquement aux tests et doit être supprimé avant de passer à un environnement de production. Supprimer la base de données de test et y accéder ? (Appuyez sur y|Y pour Oui, sur n'importe quelle autre touche pour Non) :... ignorer. Le rechargement des tables de privilèges garantira que toutes les modifications apportées jusqu'à présent prendront effet immédiatement. Recharger les tables de privilèges maintenant ? (Appuyez sur y|Y pour Oui, n'importe quelle autre touche pour Non) :yesSuccess.All done!
Arrêtez maintenant le serveur MySQL sur percona1.
[[email protected] ~]# systemctl stop mysql
Nous allons maintenant configurer notre réplication, nous allons ajouter les informations de réplication dans le fichier my.cnf.
Configurer les paramètres de réplication sur percona1 :
cat>>/etc/my.cnf<
Initialisez maintenant le cluster en amorçant le premier nœud. Il doit s'agir du nœud avec votre base de données principale, qui sera utilisée comme source de données pour le cluster dans notre cas, il s'agit du serveur percona1
[[email protected] ~]# systemctl start [email protected] de configurer la réplication, nous devons créer un utilisateur distinct pour la réplication qui sera utilisé pour le processus de réplication. pourquoi avons-nous besoin d'un utilisateur de réplication ? lorsque vous ajoutez un nouveau nœud au cluster, il vide la configuration actuelle du nœud et la transfère au deuxième nœud pour cette raison, nous avons besoin d'un utilisateur distinct.REMARQUE : Assurez-vous que l'utilisateur doit être le même que celui mentionné dans la variable "wsrep_sst_auth" dans la configuration de réplication utilisée dans le fichier my.cnf.
[[email protected] ~]#mysql -u root -p mysql>créer un utilisateur [email protected]'%' identifié par 'perconapasswd';mysql>accorder tout sur *.* à [email protected] '%';mysql>vider les privilèges ;SUR Percona2 :
Configurez les paramètres de réplication sur percona2 :
cat>>/etc/my.cnf<Maintenant, démarrez mysql et cela ajoutera ce nœud au cluster.
[[email protected] ~]# systemctl start mysqlSUR Percona3 :
Configurez les paramètres de réplication sur percona3 :
cat>>/etc/my.cnf<Maintenant, démarrez mysql et cela ajoutera ce nœud au cluster.
[[email protected] ~]# systemctl start mysqlvous observerez ces messages dans le journal mysql (var/log/mysqld.log)
(percona2) :transfert d'état depuis 0.0 (percona1) terminé
1.0 (percona3) :transfert d'état depuis 0.0 (percona1) terminé
Pour vous assurer que le cluster a été initialisé, exécutez la commande suivante :
mysql> affiche le statut comme 'wsrep%' ;+----------------------------------+- -------------------------------------------------- ----------+| nom_variable | Valeur |+---------------------------------+------------ -------------------------------------------------+ | wsrep_local_state_uuid | 6d95cd36-1c1a-11ea-999a-83631204f6e3 || wsrep_protocol_version | 9 || wsrep_last_applied | 6 |...| wsrep_flow_control_recv | 0 || wsrep_flow_control_interval | [ 173, 173 ] || wsrep_flow_control_interval_low | 173 || wsrep_flow_control_interval_high | 173 || wsrep_flow_control_status | OFF |..| wsrep_local_state | 4 || wsrep_local_state_comment | Synchronisé || wsrep_cert_index_size | 1 || wsrep_cert_bucket_count | 22 || wsrep_gcache_pool_size | 2384 |..| wsrep_incoming_addresses | 192.168.56.110:3306,192.168.56.114:3306,192.168.56.113:3306 || wsrep_cluster_weight | 3 || wsrep_desync_count | 0 || wsrep_evs_delayed | || wsrep_evs_evict_list | || wsrep_evs_repl_latency | 0/0/0/0/0 || wsrep_evs_state | OPÉRATIONNEL || wsrep_gcomm_uuid | 1d16f574-1c1b-11ea-b5dd-574c9a653584 || wsrep_cluster_conf_id | 3 || wsrep_cluster_size | 3 || wsrep_cluster_state_uuid | 6d95cd36-1c1a-11ea-999a-83631204f6e3 || wsrep_cluster_status | Primaire || wsrep_connecté | MARCHE || wsrep_local_bf_aborts | 0 || wsrep_local_index | 0 || nom_fournisseur_wsrep | Galerie || wsrep_provider_vendor | Codership Oy|| wsrep_provider_version | 3.39(rb3295e6) || wsrep_ready | MARCHE |+---------------------------------+------------ -------------------------------------------------+ 71 lignes dans l'ensemble (0,00 s) Comme vous pouvez le constater, la taille du cluster est de 3 "wsrep_cluster_size | 3" et vous pouvez également voir l'IP de nos trois nœuds
wsrep_incoming_addresses | 192.168.56.110:3306,192.168.56.114:3306,192.168.56.113:3306Testez notre cluster :
Je crée une base de données sur percona 1, puis nous vérifierons sur percoan 3 qu'elle a été répliquée.
mysql> afficher les bases de données ;+--------------------+| Base de données |+--------------------+| information_schema || mysql || performance_schema || sys |+--------------------+4 lignes dans l'ensemble (0.03 sec)mysql> CREATE DATABASE perconatest;Requête OK, 1 ligne affectée (0.03 sec)Vérifions maintenant sur percona3, nous verrons que la base de données "perconatest" sera créée
[[email protected] ~]# mysql -uroot -p -e "show databases"Entrez le mot de passe :+--------------------+| Base de données |+--------------------+| information_schema || mysql || perconatest || performance_schema || sys |+--------------------+