Percona XtraDB Cluster est une solution de haute disponibilité et d'évolutivité pour les utilisateurs de MySQL.
Percona XtraDB Cluster fournit :
Percona XtraDB Cluster est entièrement compatible avec MySQL ou Percona Server for MySQL au sens suivant :
3 machines BDD qui seront nommée :
Chaque nœud requiert au minimum :
Dans notre test, nous disposerons de :
Tout nos nœuds seront accessible sur le réseaux en Lecture/Écriture.
Installez Percona XtraDB Cluster sur tous les hôtes que vous prévoyez d'utiliser comme nœuds de cluster et assurez-vous que vous avez un accès root au serveur MySQL sur chacun d'eux.
Il est recommandé d'installer Percona XtraDB Cluster à partir des dépôts officiels de logiciels Percona en utilisant le gestionnaire de paquets correspondant à votre système.
$ apt-get update $ apt-get install -y wget gnupg2 lsb-release
$ wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb
$ dpkg -i percona-release_latest.generic_all.deb
Note:
Vous pouvez vérifier la configuration du dépôt dans le fichier /etc/apt/sources.list.d/percona-release.list.
$ yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
Note:
Vous pouvez vérifier la configuration du dépôt dans le fichier /etc/yum.repo.d/
Utilisez les commandes suivantes pour installer Percona-XtraDB-Cluster.
Important:
Action à faire sur tout les nœuds du cluster
On supprime le package “apparmor”
# apt remove apparmor
On installe le package percona-xtradb-cluster
# apt update # apt-get install percona-xtradb-cluster-5.7
On arrête le service MySQL.
# systemctl stop mysql
Le module de sécurité SELinux peut limiter l'accès aux données pour le cluster Percona XtraDB. La meilleure solution est de passer du mode “enforcing” au mode “permissive” en exécutant la commande suivante :
setenforce 0
Cela ne change le mode qu'au moment de l'exécution.
Pour exécuter SELinux en mode permissif après un redémarrage, définissez SELINUX=permissif dans le fichier de configuration /etc/selinux/config.
On installe le package percona-xtradb-cluster
# yum install percona-xtradb-cluster-5.7
On arrête le service MySQL.
# systemctl stop mysql
Après avoir installé le Percona XtraDB Cluster sur les nœuds, configurez-le avec des informations sur le cluster.
Assurez-vous que le serveur Percona XtraDB Cluster ne fonctionne pas.
$ systemctl stop mysql
L'exemple de configuration supposent qu'il y a trois nœuds XtraDB Cluster Percona :
| Node | Host | IP |
|---|---|---|
| Node 1 | pxc1 | 192.168.70.61 |
| Node 2 | pxc2 | 192.168.70.62 |
| Node 3 | pxc3 | 192.168.70.63 |
Si vous utilisez Debian ou Ubuntu, ajuster les variables de configuration suivantes au fichier /etc/mysql/percona-xtradb-cluster.conf.d/wsrep.cnf sur le premier nœud :
wsrep_provider=/usr/lib/libgalera_smm.so wsrep_cluster_name=pxc-cluster wsrep_cluster_address=gcomm://192.168.70.61,192.168.70.62,192.168.70.63 wsrep_node_name=pxc1 wsrep_node_address=192.168.70.61 wsrep_sst_method=xtrabackup-v2 wsrep_sst_auth=sstuser:passw0rd pxc_strict_mode=ENFORCING binlog_format=ROW default_storage_engine=InnoDB innodb_autoinc_lock_mode=2
Si vous utilisez RedHat ou CentOS, ajuster les variables de configuration suivantes au fichier /etc/mysql/percona-xtradb-cluster.conf.d/wsrep.cnf sur le premier nœud :
wsrep_provider=/usr/lib64/galera3/libgalera_smm.so wsrep_cluster_name=pxc-cluster wsrep_cluster_address=gcomm://192.168.70.61,192.168.70.62,192.168.70.63 wsrep_node_name=pxc1 wsrep_node_address=192.168.70.61 wsrep_sst_method=xtrabackup-v2 wsrep_sst_auth=sstuser:passw0rd pxc_strict_mode=ENFORCING binlog_format=ROW default_storage_engine=InnoDB innodb_autoinc_lock_mode=2
Utilisez la même configuration pour les deuxième et troisième nœuds, à l'exception des variables wsrep_node_name et wsrep_node_address :
Pour le deuxième nœud :
wsrep_node_name=pxc2 wsrep_node_address=192.168.70.62
Pour le troisième nœud :
wsrep_node_name=pxc3 wsrep_node_address=192.168.70.63
Après avoir configuré tous les nœuds du cluster, initialisez celui-ci en amorçant le premier nœud. Le nœud initial doit être celui qui contient toutes vos données, que vous voulez répliquer sur d'autres nœuds.
Le bootstrap implique de démarrer le nœud sans aucune adresse de grappe connue. Si la variable wsrep_cluster_address est vide, Percona XtraDB Cluster suppose qu'il s'agit du premier nœud et initialise le cluster.
Au lieu de modifier la configuration, démarrez le premier nœud à l'aide de la commande suivante :
[root@pxc1 ~]# /etc/init.d/mysql bootstrap-pxc
Lorsque vous démarrez le nœud à l'aide de la commande précédente, il fonctionne en mode bootstrap avec wsrep_cluster_address=gcomm://. Cela indique au nœud d'initialiser le cluster avec wsrep_cluster_conf_id réglé sur 1.
Après avoir ajouté d'autres nœuds au cluster, vous pouvez alors redémarrer ce nœud normalement, et il utilisera à nouveau la configuration standard.
mysql@pxc1> show status like 'wsrep%'; +----------------------------+--------------------------------------+ | Variable_name | Value | +----------------------------+--------------------------------------+ | wsrep_local_state_uuid | c2883338-834d-11e2-0800-03c9c68e41ec | | ... | ... | | wsrep_local_state | 4 | | wsrep_local_state_comment | Synced | | ... | ... | | wsrep_cluster_size | 1 | | wsrep_cluster_status | Primary | | wsrep_connected | ON | | ... | ... | | wsrep_ready | ON | +----------------------------+--------------------------------------+ 40 rows in set (0.01 sec)
La sortie précédente montre que la taille du cluster est de 1 nœud, qu'il est le composant principal, que ce nœud est à l'état synchronisé, qu'il est entièrement connecté et prêt pour la réplication en écriture.
Avant d'ajouter d'autres nœuds à votre nouveau cluster, créez un utilisateur pour SST et donnez-lui les privilèges nécessaires. Les privilèges doivent correspondre à ceux spécifiés lors de la configuration des nœuds pour la réplication en écriture.
Pour vous assurer que le cluster a été initialisé, exécutez ce qui suit :
mysql@pxc1> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 'passw0rd'; mysql@pxc1> GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost'; mysql@pxc1> FLUSH PRIVILEGES;
Après avoir installé le Percona XtraDB Cluster sur chaquun des nœuds, et les avoirs configurés avec des informations sur le cluster.
Pour Debian/Ubuntu : Link
Pour RedHat/CentOS : Link
Démarrez le deuxième nœud en utilisant la commande suivante :
[root@pxc2 ~]# /etc/init.d/mysql start
Après le démarrage du serveur, il devrait recevoir automatiquement SST.
Pour vérifier l'état du deuxième nœud, exécutez ce qui suit :
mysql@pxc2> show status like 'wsrep%'; +----------------------------+--------------------------------------+ | Variable_name | Value | +----------------------------+--------------------------------------+ | wsrep_local_state_uuid | c2883338-834d-11e2-0800-03c9c68e41ec | | ... | ... | | wsrep_local_state | 4 | | wsrep_local_state_comment | Synced | | ... | ... | | wsrep_cluster_size | 2 | | wsrep_cluster_status | Primary | | wsrep_connected | ON | | ... | ... | | wsrep_ready | ON | +----------------------------+--------------------------------------+ 40 rows in set (0.01 sec)
Les résultats précédents montrent que le nouveau nœud a été ajouté avec succès au cluster. La taille du cluster est maintenant de 2 nœuds, il est le composant principal, et il est entièrement connecté et prêt à recevoir une réplication en écriture.
Si l'état du deuxième nœud est synchronisé comme dans l'exemple précédent, alors le nœud a reçu la pleine SST, est synchronisé avec le cluster, et vous pouvez procéder à l'ajout du nœud suivant.
Important:
Si l'état du nœud est Joiner, cela signifie que le SST n'est pas terminé.
N'ajoutez pas de nouveaux nœuds tant que tous les autres ne sont pas dans l'état Synced.
https://www.percona.com/doc/percona-xtradb-cluster/5.7/index.html
https://www.percona.com/doc/percona-xtradb-cluster/5.7/install/index.html
https://www.percona.com/doc/percona-xtradb-cluster/5.7/configure.html
https://www.percona.com/doc/percona-xtradb-cluster/5.7/bootstrap.html
https://www.percona.com/doc/percona-xtradb-cluster/5.7/add-node.html