Table des matières

Introduction

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 :

Prérequis

2 machines BDD qui seront nommée :

1 machine Arbitre nommée :

Chaque nœud requiert au minimum :

Dans notre test, nous disposerons de :

Architecture

TODO

Galera Arbitrator

Lorsque vous déployez Percona XtraDB Cluster, il est recommandé d'utiliser au moins trois instances : Trois nœuds, trois centres de données, etc.

Si le coût de l'ajout de ressources (par exemple, un troisième centre de données) est trop élevé, vous pouvez utiliser Galera Arbitrator. Galera Arbitrator est membre d'un cluster qui participe au vote, mais pas à la réplication proprement dite.

Important:

Bien que Galera Arbitrator ne participe pas à la réplication, il reçoit les mêmes données que tous les autres nœuds.

Vous devez sécuriser sa connexion réseau.

Galera Arbitrator a deux objectifs :

Plateforme Percona XtraDB Cluster

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.

Repositories

Sous Debian

$ 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.

Sous RedHat

$ 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/

Installation Percona XtraDB

Utilisez les commandes suivantes pour installer Percona-XtraDB-Cluster sur les deux noeuds de base de données.

Important:

Action à faire sur les 2 nœuds du cluster. Nous installerons le package Galera sur le troisième !

Sous Debian

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

Sous RedHat

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

Configuration des nœuds pour la réplication

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 :

^ Node ^ Host ^ IP ^

Node 1 pxc1 192.168.70.61
Node 2 pxc2 192.168.70.62

Sous Debian

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

Sous RedHat

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

Cluster global

Utilisez la même configuration pour les deuxiè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

Installation de Galera Arbitrator

Maintenant que l'on a installer Percona XtraDB sur les 2 noeuds de base de données, il nous faut installer le package percona-xtradb-cluster-garbd-5.7 sur notre noeud qui fera office d'arbitre.

Mais avant, on supprime le package “apparmor”

# apt remove apparmor

^ Node ^ Host ^ IP ^

Node 3 pxc3 192.168.70.63

Sous Debian

# apt-get install percona-xtradb-cluster-garbd-5.7

Sous RedHat

# yum install Percona-XtraDB-Cluster-garbd-57

Configuration de Galera Arbitrator

Sous Debian

# nano /etc/default/garb
...
# A comma-separated list of node addresses (address[:port]) in the cluster
GALERA_NODES="192.168.70.61:4567,192.168.70.62:4567,192.168.70.63:4567"
 
# Galera cluster name, should be the same as on the rest of the nodes.
GALERA_GROUP="pxc-cluster"
...

Sous RedHat

# vi /etc/sysconfig/garb
...
# A comma-separated list of node addresses (address[:port]) in the cluster
GALERA_NODES="192.168.70.61:4567,192.168.70.62:4567,192.168.70.63:4567"
 
# Galera cluster name, should be the same as on the rest of the nodes.
GALERA_GROUP="pxc-cluster"
...

Bootstrap du cluster

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;

Ajout des Nœuds

Après avoir installé le Percona XtraDB Cluster sur chacun 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.

Il ne nous reste plus qu'à démarrer le service “garb” galera arbitrator sur notre noeud arbitre.

# systemctl start garb

Le cluster est maintenant être opérationnel.

MariaDB [(none)]> show status like '%wsrep_cluster_size%';
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 3     |
+--------------------+-------+
1 row in set (0.003 sec)

wsrep_cluster_size indique le nombre de noeuds courant du cluster Percona XtraDB, soit 3 (2 bdd + 1 arbitre).

Annexe

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