Prérequis système
Pour installer un cluster Percona XtraDB 5.7 fonctionnel, commencez par préparer votre système CentOS 7 avec les dépendances nécessaires :
# Mise à jour du système et installation des dépendances essentielles
yum clean all && yum -y update
yum -y install gcc-c++ gd-devel libxml2-devel libjpeg-turbo-devel libpng-devel net-snmp-devel \
wget telnet vim zip unzip curl-devel libxslt-devel pcre-devel libcurl-devel \
freetype-devel unixODBC-devel libevent-devel cyrus-sasl-devel openldap-devel \
rsync patch iptables-services libaio-devel cmake bison mhash-devel ntpdate \
libmcrypt-devel boost-devel asio-devel readline-devel openssl-devel
# Installation des outils de développement
yum groupinstall -y "Development Tools" "Server Platform Development"
Configuraton réseau
Ajoutez les entrées suivantes dans votre fichier /etc/hosts pour permettre la résolutino des noms entre les nœuds :
cat >> /etc/hosts <<EOF
192.168.10.101 cluster-node1
192.168.10.102 cluster-node2
192.168.10.103 cluster-node3
EOF
Configurez l'accès SSH sans mot de passe entre tous les nœuds :
ssh-keygen -t rsa -f /root/.ssh/id_rsa -N ""
cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
# Distribuez la clé sur tous les nœuds (exécuter depuis le premier nœud)
for node in cluster-node2 cluster-node3; do
ssh-copy-id -i /root/.ssh/id_rsa.pub $node
done
Paramètres système
Optimisez les paramètres réseau et système pour une meilleure performance du cluster :
cat >> /etc/sysctl.conf <<EOF
# Optimisations réseau pour PXC
net.ipv4.tcp_max_syn_backlog = 32768
net.ipv4.tcp_syn_retries = 3
net.ipv4.tcp_synack_retries = 3
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_keepalive_time = 60
net.core.somaxconn = 16384
net.core.netdev_max_backlog = 65536
vm.swappiness = 1
EOF
sysctl -p
# Limites de fichiers ouverts
cat >> /etc/security/limits.conf <<EOF
mysql soft nofile 65535
mysql hard nofile 65535
mysql soft nproc 16384
mysql hard nproc 16384
EOF
Installation de Percona XtraDB Cluster
Téléchargez et installez le pacckage PXC 5.7 sur tous les nœuds :
mkdir -p /opt/pxc
cd /opt/pxc
wget https://downloads.percona.com/downloads/Percona-XtraDB-Cluster-LATEST/Percona-XtraDB-Cluster-5.7.39-42.0/binary/tarball/Percona-XtraDB-Cluster-5.7.39-rel42.0-Linux.x86_64.glibc2.17.tar.gz
tar -xzf Percona-XtraDB-Cluster-5.7.39-rel42.0-Linux.x86_64.glibc2.17.tar.gz
ln -s /opt/pxc/Percona-XtraDB-Cluster-5.7.39-rel42.0-Linux.x86_64.glibc2.17 /usr/local/pxc
Configuration des nœuds
Créez les répertoires nécessaires et définissez les permissions :
groupadd pxcuser
useradd -g pxcuser -d /var/lib/pxc -s /sbin/nologin pxc
mkdir -p /var/lib/pxc/data /var/lib/pxc/logs /var/lib/pxc/tmp
chown -R pxc:pxcuser /var/lib/pxc
Configurez le premier nœud (192.168.10.101) avec le fichier de configuration suivant :
cat > /etc/pxc-node1.cnf <<EOF
[client]
port = 3306
socket = /var/lib/pxc/tmp/mysql.sock
[mysqld]
user = pxc
basedir = /usr/local/pxc
datadir = /var/lib/pxc/data
socket = /var/lib/pxc/tmp/mysql.sock
pid-file = /var/lib/pxc/tmp/mysql.pid
log-error = /var/lib/pxc/logs/error.log
# Configuration réseau
wsrep_cluster_address = gcomm://192.168.10.101:4567,192.168.10.102:4567,192.168.10.103:4567
wsrep_node_address = 192.168.10.101
wsrep_node_name = cluster-node1
wsrep_cluster_name = pxc-cluster-production
# Configuration SST
wsrep_sst_method = xtrabackup-v2
wsrep_sst_auth = pxc_backup:SecureP@ss123
wsrep_slave_threads = 4
# Paramètres InnoDB
innodb_buffer_pool_size = 2G
innodb_log_file_size = 1G
innodb_file_per_table = ON
innodb_flush_log_at_trx_commit = 2
# Paramètres PXC
pxc_strict_mode = ENFORCING
wsrep_provider_options = "gcache.size=2G; debug=0"
EOF
Adaptez la configuration pour les autres nœuds en modifiant les paramètres spécifiques :
- Pour le nœud 2 (192.168.10.102) : wsrep_node_address et wsrep_node_name
- Pour le nœud 3 (192.168.10.103) : wsrep_node_address et wsrep_node_name
Initialisation et démarrage
Initialisez le premier nœud du cluster :
/usr/local/pxc/bin/mysqld --defaults-file=/etc/pxc-node1.cnf --initialize-insecure --user=pxc
/usr/local/pxc/bin/mysqld --defaults-file=/etc/pxc-node1.cnf --wsrep_new_cluster --user=pxc &
Créez l'utilisateur SST nécessaire pour la synchronisation entre nœuds :
/usr/local/pxc/bin/mysql -e "CREATE USER 'pxc_backup'@'localhost' IDENTIFIED BY 'SecureP@ss123';
GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'pxc_backup'@'localhost';"
Démarrez les autres nœuds normalement :
# Pour le nœud 2
/usr/local/pxc/bin/mysqld --defaults-file=/etc/pxc-node2.cnf --user=pxc &
# Pour le nœud 3
/usr/local/pxc/bin/mysqld --defaults-file=/etc/pxc-node3.cnf --user=pxc &
Vérification du cluster
Connectez-vous à n'importe quel nœud pour vérifier l'état du cluster :
/usr/local/pxc/bin/mysql -e "SHOW STATUS LIKE 'wsrep_cluster_size';
SHOW STATUS LIKE 'wsrep_cluster_status';
SHOW STATUS LIKE 'wsrep_connected';"
Une sortie correcte devrait afficher :
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| wsrep_cluster_size | 3 |
| wsrep_cluster_status | Primary |
| wsrep_connected | ON |
+----------------------+-------+
Résolution des problèmes courants
Si un nœud ne parvient pas à rejoindre le cluster :
- Vérifiez les logs dans /var/lib/pxc/logs/error.log
- Assurez-vous que les ports 3306, 4444, 4567 et 4568 sont ouverts entre les nœuds
- Confirmez que l'utilisateur SST a les permissions appropriées
- Vérifiez la synchronisation NTP entre les serveurs
Lors du redémarrage complet du cluster, démarrez toujours le dernier nœud arrêté avec l'option --wsrep_new_cluster pour éviter les problèmes de quorum.