Installation et configuration d'un cluster Percona XtraDB 5.7

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 :

  1. Vérifiez les logs dans /var/lib/pxc/logs/error.log
  2. Assurez-vous que les ports 3306, 4444, 4567 et 4568 sont ouverts entre les nœuds
  3. Confirmez que l'utilisateur SST a les permissions appropriées
  4. 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.

Étiquettes: Percona-XtraDB-Cluster MySQL-5.7 galera High-Availability database-clustering

Publié le 27 septembre à 03h23