Percona XtraDB Cluster est une solution de clustering de bases de données entièrement open source pour MySQL. Il vous permet de créer un déploiement de serveur MySQL robuste et à haute disponibilité qui offre des performances élevées. La version de Percona XtraDB Cluster que je vais utilisé est la 8.4, qui est entièrement compatible avec MySQL Server Comunity Edition 8.4.5 LTS.
Percona XtraDB Cluster fournit des fonctionnalités telles que la réplication synchrone, la réplication multi-sources, le provisionnement automatique des nœuds, la configuration automatique du cryptage SSL et des performances optimisées.
Percona XtraDB Cluster garantit la haute disponibilité de votre serveur de base de données, offre une évolutivité linéaire et évite les temps d’arrêt et la perte de données.
Dans ce didacticiel, vous allez installer et configurer le cluster MySQL via Percona XtraDB Cluster (PXC) sur les serveurs Debian 12. Vous installerez Percona XtraDB Cluster (une solution open source pour le cluster MySQL) sur plusieurs serveurs Debian, puis configurerez le cluster MySQL pour permettre la réplication entre plusieurs serveurs MySQL.
Conditions préalables
Pour terminer ce didacticiel, vous aurez besoin d’au moins deux serveurs exécutant Debian 12. De plus, vous devez disposer d’un utilisateur non root doté des privilèges d’administrateur sudo/root sur tous vos serveurs.
Cet exemple utilise trois serveurs Debian 12 avec les détails suivants :
Hostname IP Address
-----------------------------------
pxc01 10.0.0.221
pxc02 10.0.0.222
pxc03 10.0.0.223
Lorsque tous les serveurs sont prêts, vous pouvez commencer à installer le cluster Percona XtraDB.
Configurer les hôtes
Tout d’abord, vous devez configurer le fichier /etc/hosts sur chaque serveur pour vous assurer que chaque nom d’hôte est résolu en adresse IP appropriée. Ceci, vous devez le faire sur tous les serveurs.
Pour commencer, ouvrez le fichier de configuration ‘/etc/hosts’ à l’aide de l’éditeur nano suivant.
sudo nano /etc/hosts
Ajoutez les lignes suivantes au fichier et assurez-vous de modifier les détails des adresses IP et des noms d’hôte avec votre environnement.
10.0.0.221 pxc01
10.0.0.222 pxc02
10.0.0.223 pxc03
Installation du cluster Percona XtraDB
Dans cette section, vous allez ajouter et configurer le référentiel Percona XtraDB pour la distribution basée sur Debian. Ensuite, vous installerez Percona XtraDB sur tous vos serveurs.
De plus, lors de l’installation, vous serez invité à configurer le mot de passe root MySQL et à configurer le plugin d’authentification par défaut pour Percona XtraDB Cluster. Enfin, vous vérifierez l’installation du cluster Percona XtraDB en vous connectant au shell MySQL via l’utilisateur root MySQL et le mot de passe que vous avez configurés.
Pour commencer, entrez la commande apt suivante pour installer certaines dépendances de base. Saisissez y lorsque vous y êtes invité et appuyez sur ENTRÉE pour continuer.
sudo apt install wget gnupg2 lsb-release curl
Ensuite, téléchargez le package du référentiel Percona XtraDB via la commande wget suivante. Une fois téléchargé, installez-le via la commande ‘dpkg -i‘ ci-dessous.
wget -q https://repo.percona.com/apt/percona-release_latest.generic_all.deb
sudo dpkg -i percona-release_latest.generic_all.deb
Maintenant, mettez à jour et actualisez l’index de votre paquet Debian et exécutez la commande « percona-release » pour configurer le référentiel du cluster Percona XtraDB. Dans cet exemple, vous activerez le package Percona XtraDB Cluster v8.0, qui est équivalent au serveur MySQL v8.0.
Mettre à jour le référentiel.
sudo apt update
Activez le référentiel Percona XtraDB Cluster v8.4.
sudo percona-release setup pxc-84-lts
Une fois le référentiel activé, entrez la commande ‘apt install’ pour installer le package ‘percona-xtradb-cluster’ sur vos systèmes. Saisissez y pour confirmer l’installation et appuyez sur ENTRÉE pour continuer.
sudo apt install percona-xtradb-cluster
Lors de l’installation du cluster Percona XtraDB, il vous sera demandé de configurer le mot de passe root MySQL.
Saisissez le nouveau mot de passe fort et sélectionnez OK.
Répétez votre mot de passe et sélectionnez à nouveau OK.
Pour le plug-in d’authentification MySQL par défaut, choisissez l’option « Utiliser un cryptage fort par mot de passe (RECOMMANDÉ) » et sélectionnez OK.
Le cluster Percona XtraDB doit maintenant être installé et il démarrera et sera activé automatiquement.
Lorsque Percona XtraDB Cluster est installé, entrez la commande suivante pour vérifier l’état du service MySQL.
sudo systemctl start mysql
sudo systemctl is-enabled mysql
sudo systemctl status mysql
Une sortie ‘enabled‘ confirme que le serveur MySQL est activé et démarrera automatiquement au démarrage du système. Et la sortie ‘actif (en cours d’exécution)‘ confirme que le serveur MySQL est en cours d’exécution.
Pour vérifier votre mot de passe root MySQL, connectez-vous au shell MySQL via la commande ‘mysql‘ ci-dessous. Lorsqu’on vous demande le mot de passe, saisissez votre mot de passe root MySQL.
sudo mysql -u root -p
En cas de succès, vous devriez obtenir le shell MySQL.
Vous pouvez également vérifier l’état détaillé de votre serveur MySQL en saisissant la requête suivante.
sudo systemctl status mysql
Vous devriez recevoir un résultat similaire à celui-ci : Vous êtes connecté au cluster MySQL 8.0 Percona XtraDB.

À ce stade, vous avez maintenant configuré le fichier /etc/hosts de votre système et également installé le Percona XtraDB Cluster MySQL 8.0 sur tous vos serveurs. Vous êtes prêt à commencer la configuration du cluster Percona XtraDB.
Arrêt du service de cluster Percona XtraDB
Avant de commencer à configurer le cluster Percona XtraDB, vous devez vous assurer que le serveur MySQL est arrêté.
Entrez l’utilitaire de commande systemctl suivant pour arrêter le serveur MySQL sur vos serveurs. Ensuite, vérifiez l’état du serveur MySQL pour vous assurer que le service est arrêté.
sudo systemctl stop mysql
sudo systemctl status mysql
Vous pouvez maintenant commencer à initialiser le cluster Percona XtraDB pour le premier nœud « pxc01 ».
Copie de certificats SSL/TLS
Percona XtraDB Cluster dispose de deux types de chiffrement du trafic : une connexion client-serveur et un trafic de réplication. Sur le dernier Percona XtraDB Cluster v8.0, tout le trafic de réplication est activé par défaut pour améliorer la sécurité.
Lors de l’installation du cluster Percona XtraDB, SSL/TLS est automatiquement généré dans le répertoire de données ‘/var/lib/mysql’. Entrez la commande suivante pour vérifier la liste des certificats SL/TLS dans le répertoire ‘/var/lib/mysql’.
ls /var/lib/mysql/*.pem
Vous devriez voir trois types de certificats SSL/TLS : client, serveur et autorité de certification.

Pour créer et configurer le cluster Percona XtraDB, tous les serveurs doivent avoir les mêmes certificats d’autorité de certification et de serveur. Vous devez donc copier les certificats par défaut de l’autorité de certification et du serveur de ‘pxc01‘ vers ‘pxc02‘ et ‘pxc03‘.
Sur le serveur ‘pxc01‘, déplacez votre répertoire de travail vers le répertoire ‘/var/lib/mysql’.
cd /var/lib/mysql
Entrez la commande scp suivante pour copier les certificats de l’autorité de certification et du serveur sur les serveurs « pxc02 » et « pxc03 ».
scp server-key.pem server-cert.pem ca.pem root@pxc02:/var/lib/mysql
scp server-key.pem server-cert.pem ca.pem root@pxc03:/var/lib/mysql
Copiez les certificats de l’autorité de certification et du serveur des serveurs « pxc01 » vers « pxc02 » et « pxc03 ».
Une fois les certificats SSL/TLS copiés, vous pouvez initialiser le cluster Percona XtraDB.
Initialisation du cluster Percona XtraDB sur le premier nœud
Dans cette section, vous allez initialiser le cluster Percona XtraDB à partir du premier serveur de nœud « pxc01 ». Assurez-vous d’exécuter les étapes suivantes sur le serveur « pxc01 ».
Ouvrez le fichier de configuration MySQL ‘/etc/mysql/my.cnf’ à l’aide de la commande suivante de l’éditeur nano.
sudo nano /etc/mysql/my.cnf
Ajoutez les lignes suivantes au fichier. Assurez-vous de modifier la valeur de « wsrep_cluster_address » avec les adresses IP de tous vos serveurs. De plus, sur ‘wsrep_node_address‘, vous devez saisir l’adresse IP ‘pxc01‘.
[mysqld]
datadir=/var/lib/mysql
user=mysql
# Path to Galera library
wsrep_provider=/usr/lib/libgalera_smm.so
# Cluster connection URL contains the IPs of pxc01, pxc02, and pxc03
wsrep_cluster_address=gcomm://10.0.0.221,10.0.0.222,10.0.0.223
# In order for Galera to work correctly binlog format should be ROW
binlog_format=ROW
# Using the MyISAM storage engine is not recommended.
default_storage_engine=InnoDB
# This InnoDB autoincrement locking mode is a requirement for Galera
innodb_autoinc_lock_mode=2
# Node 1 address
wsrep_node_address=10.0.0.221
# SST method
wsrep_sst_method=xtrabackup-v2
# Cluster name
wsrep_cluster_name=pxc_cluster
#pxc_strict_mode allowed values: DISABLED,PERMISSIVE,ENFORCING,MASTER
pxc_strict_mode=ENFORCING
wsrep_provider_options="socket.ssl_key=server-key.pem;socket.ssl_cert=server-cert.pem;socket.ssl_ca=ca.pem"
[sst]
encrypt=4
ssl-key=server-key.pem
ssl-ca=ca.pem
Enregistrez et fermez le fichier ‘/etc/mysql/my.cnf‘ lorsque vous avez terminé.
Ensuite, exécutez la commande systemctl suivante pour amorcer et initialiser le cluster Percona XtraDB.
Le ‘mysql@bootstrap‘ est un service systemd utilisé pour exécuter le cluster Percona XtraDB et il est différent du service ‘mysql‘. Lors de la construction d’un serveur MySQL avec percona XtraDB Cluster, le premier nœud doit être exécuté avec le service ‘mysql@bootstrap‘.
systemctl start mysql@bootstrap
Une fois terminé, entrez la commande mysql suivante pour vous connecter au shell MySQL. Saisissez le mot de passe root de votre serveur MySQL.
sudo mysql -u root -p
Entrez la requête MySQL suivante pour vous assurer que le cluster est initialisé.
show status like 'wsrep%';
Vous devriez recevoir un résultat comme celui-ci : dans la section « wsrep_cluster_size », vous verrez la valeur « 1 », ce qui signifie que le cluster Percona XtraDB est initialisé avec 1 serveur. Vous obtiendrez également les adresses IP des serveurs dans la section « wsrep_incoming_address ». Enfin, le nœud est dans l’état Synced, ce qui signifie qu’il est entièrement connecté et prêt pour la réplication en écriture.
Une fois le premier nœud initialisé, vous êtes prêt à ajouter les deuxième et troisième nœuds « pxc02 » et « pxc03 » au cluster Percona XtraDB.
Ajout de Node2 et Node3 au cluster
L’ajout de nouveaux nœuds au cluster percona XtraDB est similaire à l’initialisation sur le premier nœud. Vous trouverez ci-dessous les étapes simples que vous devrez suivre :
- Modifiez le fichier de configuration MySQL ‘/etc/mysql/my.cnf’.
- Démarrez le serveur MySQL
- Connectez-vous au shell MySQL et vérifiez le cluster Percona XtraDB.
Commençons maintenant à ajouter « pxc02 » et « pxc03 » au cluster Percona XtraDB.
Ajout du nœud pxc02
Connectez-vous au serveur ‘pxc02‘ et ouvrez le fichier de configuration MySQL ‘/etc/mysql/my.cnf’ à l’aide de la commande suivante de l’éditeur nano.
sudo nano /etc/mysql/my.cnf
Ajoutez les lignes suivantes au fichier et assurez-vous de modifier la valeur de ‘wsrep_cluster_address’ avec les adresses IP de tous vos serveurs. De plus, sur ‘wsrep_node_address‘, vous devez saisir l’adresse IP ‘pxc02‘.
[mysqld]
datadir=/var/lib/mysql
user=mysql
# Path to Galera library
wsrep_provider=/usr/lib/libgalera_smm.so
# Cluster connection URL contains the IPs of pxc01, pxc02, and pxc03
wsrep_cluster_address=gcomm://10.0.0.221,10.0.0.222,10.0.0.223
# In order for Galera to work correctly binlog format should be ROW
binlog_format=ROW
# Using the MyISAM storage engine is not recommended
default_storage_engine=InnoDB
# This InnoDB autoincrement locking mode is a requirement for Galera
innodb_autoinc_lock_mode=2
# Node #2 address
wsrep_node_address=10.0.0.222
# Cluster name
wsrep_cluster_name=pxc_cluster
# SST method
wsrep_sst_method=xtrabackup-v2
wsrep_provider_options="socket.ssl_key=server-key.pem;socket.ssl_cert=server-cert.pem;socket.ssl_ca=ca.pem"
[sst]
encrypt=4
ssl-key=server-key.pem
ssl-ca=ca.pem
ssl-cert=server-cert.pem
Enregistrez et fermez le fichier ‘/etc/mysql/my.cnf‘ lorsque vous avez terminé.
Ensuite, démarrez le serveur MySQL en entrant l’utilitaire de commande systemctl suivant. Vérifiez ensuite l’état du serveur MySQL pour vous assurer qu’il fonctionne.
Cela démarrera le service MySQL et rejoindra le cluster Percona XtraDB initialisé sur le serveur « pxc01 ».
sudo systemctl start mysql
sudo systemctl status mysql

Pour vérifier que le processus réussit, vous devez vous connecter au shell MySQL. Entrez la commande suivante pour vous connecter au shell MySQL en tant qu’utilisateur root. Lorsque vous y êtes invité, saisissez votre mot de passe root MySQL.
sudo mysql -u root -p
Une fois connecté, saisissez la requête MySQL suivante pour vérifier l’état du cluster Percona XtraDB.
show status like 'wsrep%';
Vous devriez recevoir un résultat comme celui-ci – Dans la section ‘wsrep_cluster_size‘, vous verrez la valeur ‘2’, ce qui signifie qu’il y a deux serveurs disponibles sur le cluster Percona XtraDB. Vous obtiendrez également les adresses IP des serveurs dans la section « wsrep_incoming_address », qui sont les adresses IP des serveurs pxc01 et pxc02. Enfin, le nœud est dans l’état Synced, ce qui signifie qu’il est entièrement connecté et prêt pour la réplication en écriture.
Grâce à cela, le cluster Percona XtraDB fonctionne désormais avec deux nœuds/serveurs pxc01 et pxc02. Ensuite, accédez au serveur pxc03 pour l’ajouter au cluster Percona XtraDB.
Ajout du nœud pxc03
Connectez-vous au serveur ‘pxc03‘ et ouvrez le fichier de configuration MySQL ‘/etc/mysql/my.cnf‘ à l’aide de la commande suivante de l’éditeur nano.
sudo nano /etc/mysql/my.cnf
Ajoutez les lignes suivantes au fichier et assurez-vous de modifier la valeur de « wsrep_cluster_address » avec les adresses IP de tous vos serveurs. De plus, sur ‘wsrep_node_address‘, vous devez saisir l’adresse IP ‘pxc03‘.
[mysqld]
datadir=/var/lib/mysql
user=mysql
# Path to Galera library
wsrep_provider=/usr/lib/libgalera_smm.so
# Cluster connection URL contains the IPs of pxc01, pxc02, and pxc03
wsrep_cluster_address=gcomm://10.0.0.221,10.0.0.222,10.0.0.223
# In order for Galera to work correctly binlog format should be ROW
binlog_format=ROW
# Using the MyISAM storage engine is not recommended
default_storage_engine=InnoDB
# This InnoDB autoincrement locking mode is a requirement for Galera
innodb_autoinc_lock_mode=2
# Node #2 address
wsrep_node_address=10.0.0.223
# Cluster name
wsrep_cluster_name=pxc_cluster
# SST method
wsrep_sst_method=xtrabackup-v2
wsrep_provider_options="socket.ssl_key=server-key.pem;socket.ssl_cert=server-cert.pem;socket.ssl_ca=ca.pem"
[sst]
encrypt=4
ssl-key=server-key.pem
ssl-ca=ca.pem
ssl-cert=server-cert.pem
Enregistrez et fermez le fichier ‘/etc/mysql/my.cnf’ lorsque vous avez terminé.
Ensuite, démarrez le serveur MySQL en entrant l’utilitaire de commande systemctl suivant. Vérifiez ensuite l’état du serveur MySQL pour vous assurer qu’il fonctionne.
Cela démarrera le service MySQL et rejoindra le cluster Percona XtraDB.
sudo systemctl start mysql
Pour vérifier que le processus réussit, vous devez vous connecter au shell MySQL. Entrez la commande suivante pour vous connecter au shell MySQL en tant qu’utilisateur root. Lorsque vous y êtes invité, saisissez votre mot de passe root MySQL.
sudo mysql -u root -p
Une fois connecté, saisissez la requête MySQL suivante pour vérifier l’état du cluster Percona XtraDB.
show status like 'wsrep%';
Vous devriez recevoir un résultat comme celui-ci : dans la section ‘wsrep_cluster_size’, vous verrez la valeur ‘3’, ce qui signifie que trois serveurs sont disponibles sur le cluster Percona XtraDB. Vous obtiendrez également les adresses IP du serveur dans la section « wsrep_incoming_address », qui sont pxc01, pxc02 et pxc03 . adresses IP des serveurs. Enfin, le nœud est dans l’état Synced, ce qui signifie qu’il est entièrement connecté et prêt pour la réplication en écriture.
Grâce à cela, le cluster Percona XtraDB fonctionne désormais avec trois serveurs Debian pxc01, pxc02 et pxc03. Vous avez maintenant terminé le déploiement du cluster Percona XtraDB avec trois serveurs Debian 11. À l’étape suivante, vous vérifierez la réplication de la base de données entre le serveur Percona XtraDB Cluster.
Test de réplication
Connectez-vous au shell MySQL depuis le serveur ‘pxc02‘ et créez une nouvelle base de données ‘percona‘.
sudo mysql -u root -p
CREATE DATABASE percona;
Passez maintenant au serveur ‘pxc03‘, connectez-vous au shell MySQL via l’utilisateur root MySQL, puis passez à la base de données ‘percona‘ que vous avez créée à partir du ‘ Serveur pxc02‘.
sudo mysql -u root -p
USE percona;
En cas de succès, vous devriez recevoir un résultat tel que « Base de données modifiée ». Cela confirme également que la base de données « percona » est répliquée sur les serveurs du cluster Percona XtraDB.
Ensuite, exécutez la requête MySQL suivante pour créer une nouvelle table « exemple » à partir du serveur « pxc03 ».
CREATE TABLE example (node_id INT PRIMARY KEY, node_name VARCHAR(30));
Ensuite, accédez à nouveau au serveur « pxc01 » et exécutez la requête suivante pour insérer de nouvelles données dans la base de données « percona ».
INSERT INTO percona.example VALUES (1, 'pxc01');
INSERT INTO percona.example VALUES (2, 'pxc02');
INSERT INTO percona.example VALUES (3, 'pxc03');
Enfin, revenez au serveur ‘pxc02‘ et exécutez la requête suivante pour récupérer les données de la base de données ‘percona‘ et de la table ‘exemple ‘.
SELECT * FROM percona.example;
Vous devriez recevoir un résultat comme celui-ci : Les données sont disponibles sur le cluster Percona XtraDB ‘pxc02‘. Grâce à cela, la réplication entre les serveurs Percona XtraDB Cluster fonctionne, ce qui signifie que votre déploiement Percona XtraDB Cluster sur les serveurs Debian 12 est également réussi.
Conclusion
Dans ce didacticiel, vous avez installé et configuré Percona XtraDB Cluster avec trois serveurs Debian 12. Vous avez initialisé le cluster Percona XtraDB et ajouté deux nœuds/serveurs au cluster Percona XtraDB.
En plus de cela, vous avez également sécurisé le cluster Percona XtraDB en chiffrant le trafic entre tous les serveurs à l’aide de certificats SSL/TLS. Ceci est réalisé avec l’option ‘pxc-encrypt-cluster-traffic’, activée par défaut.
Avec cela, vous pouvez maintenant commencer à ajouter plus de serveurs à votre cluster Percona XtraDB en utilisant les étapes que vous avez apprises et en ajoutant des nœuds supplémentaires qui permettront la haute disponibilité et l’équilibrage de charge sur le cluster Percona XtraDB. Pour en savoir plus, visitez la documentation officielle du cluster Percona XtraDB.