Introduction

Percona XtraDB Cluster est une solution de haute disponibilité et d'évolutivité pour les utilisateurs de MySQL.

Percona XtraDB Cluster fournit :

  • Réplication synchrone. Transaction engagée sur tous les nœuds ou aucune.
  • Réplication multi-maîtres. Vous pouvez écrire sur n'importe quel nœud.
  • Application parallèle d'événements sur l'esclave. Véritable “réplication parallèle”.
  • Provisionnement automatique des nœuds.
  • Cohérence des données. Plus d'esclaves non synchronisés.

Percona XtraDB Cluster est entièrement compatible avec MySQL ou Percona Server for MySQL au sens suivant :

  • Compatibilité des données. Percona XtraDB Cluster fonctionne avec les bases de données créées dans MySQL/Percona Server for MySQL.
  • Compatibilité avec les applications. Il n'y a pas ou peu de modifications à apporter aux applications pour commencer à travailler avec Percona XtraDB Cluster.

Prérequis

3 machines BDD qui seront nommée :

  • pxc1.oowy.lan (192.168.1.80)
  • pxc2.oowy.lan (192.168.1.81)
  • pxc3.oowy.lan (192.168.1.82)

Chaque nœud requiert au minimum :

  • 1GHz 1 CPU
  • 512Mo de RAM
  • 100 Mbps de connexion réseau

Dans notre test, nous disposerons de :

  • 1 CPU
  • 2Go de RAM
  • 100 Mbps de connexion réseau

Architecture

Tout nos nœuds seront accessible sur le réseaux en Lecture/Écriture.

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.

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

Annexe

Ce site web utilise des cookies. En utilisant le site Web, vous acceptez le stockage de cookies sur votre ordinateur. Vous reconnaissez également que vous avez lu et compris notre politique de confidentialité. Si vous n'êtes pas d'accord, quittez le site.En savoir plus