MODOP – PARTIE 3 – Installation WordPress en HA – Cluster MySQL

3 machines Mysql Percona (AlmaLinux 8)

  • node01-sqlw 172.16.186.27
  • node02-sqlw 172.16.186.28
  • node03-sqlw 172.16.186.29

Le Pool « Cluster_SQLW » va être composé de trois machines virtuelles

  • Node01-sqlw -> 172.16.186.27
    • 2CPU, 2G RAM, 20Go Disk
  • Node02-sqlw -> 172.16.186.28
    • 2CPU, 2G RAM, 20Go Disk
  • Node03-sqlw -> 172.16.186.29
    • 2CPU, 2G RAM, 20Go Disk

Spécification des machines

1°) Désactivation du SElinux (3 nœuds sqlw)

[root@node01-sqlw ~]# vi /etc/selinux/config
SELINUX=disabled

Redémarrer la machine.

[root@node01-sqlw ~]# reboot

2°) Désactiver l’IPV6 (3 nœuds sqlw)

[root@node01-sqlw ~]# vi /etc/sysctl.conf
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.all.autoconf = 0
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.default.autoconf = 0
[root@node01-sqlw ~]# sysctl -p

3°) Installation de paquets utiles(3 nœuds)

[root@node01-sqlw ~]# yum update && yum upgrade
[root@node01-sqlw ~]#] yum -y install qemu-guest-agent
[root@node01-sqlw ~]# yum -y install htop nmap net-tools
[root@node01-sqlw ~]# yum -y install epel-release socat

Suppression des lib inutiles.

[root@node01-sqlw ~]# yum -y remove mariadb-libs

4°) Installation Percona(3 nœuds)

[root@node01-sqlw ~]# yum install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm
[root@node01-sqlw ~]# yum makecache && yum update
[root@node01-sqlw ~]# yum install -y Percona-XtraDB-Cluster-client-57* Percona-XtraDB-Cluster-server-57*
[root@node01-sqlw ~]# yum install -y Percona-XtraDB-Cluster-shared-57-debuginfo* Percona-XtraDB-Cluster-garbd-57-debuginfo*
[root@node01-sqlw ~]# yum install -y mariadb-server-galera.x86_64
[root@node01-sqlw ~]# yum install -y percona-toolkit
[root@node01-sqlw ~]# yum install -y percona-xtrabackup-24

[root@node01-sqlw ~]# systemctl enable --now mariadb.service

5°) Ajout des Rules Firewall(3 nœuds)

[root@node01-sqlw ~]#firewall-cmd --permanent --add-port={3306,4444,4567,4568}/tcp
[root@node01-sqlw ~]#firewall-cmd --zone=public --add-port=4567/udp --permanent
[root@node01-sqlw ~]#firewall-cmd --reload

6°)Installantion NTP(3 nœuds)

[root@node01-sqlw ~]# dnf install chrony
[root@node01-sqlw ~]# systemctl start chronyd
[root@node01-sqlw ~]# systemctl enable chronyd
[root@node01-sqlw ~]# systemctl status chronyd

[root@node01-sqlw ~]# firewall-cmd --permanent --add-service=ntp
[root@node01-sqlw ~]# firewall-cmd --reload

7°) Configurer le nœud node01-sqlw

[root@node01-sqlw ~]# systemctl stop mariadb
[root@node01-sqlw ~]# vi /etc/my.cnf
[mysqld]
wsrep_cluster_address = gcomm://
wsrep_provider = /usr/lib64/galera3/libgalera_smm.so
wsrep_slave_threads = 8
wsrep_cluster_name = SQL-Cluster
wsrep_node_name = node01-sqlw
wsrep_node_address = node01-sqlw
wsrep_sst_method = xtrabackup-v2
wsrep_sst_auth = mysql-cluster:mysql@2021

Création du Cluster

[root@node01-sqlw ~]# rm -rf /var/lib/mysql/*
[root@node01-sqlw ~]# galera_new_cluster
[root@node01-sqlw ~]# systemctl start mariadb && systemctl enable mariadb

Connexion à la base de données Percona Mariadb

[root@node01-sqlw ~]# mysql -u root –p

MariaDB [(none)]> SHOW STATUS LIKE 'wsrep_local_state_comment';

MariaDB [(none)]> show global status like 'wsrep_cluster_size';

MariaDB [(none)]> show global status like 'wsrep%';

7°) Configurer le root de Mariadb

[root@node01-sqlw ~]# mysql_secure_installation
Enter current password for root (enter for none): « ENTER »
Set root password? [Y/n] Y
New password: « Votre password »
Re-enter new password: « retaper password »
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

8°) Création des utilisateurs/Machines « mysql-cluster »

[root@node01-sqlw ~]#mysql -u root -p
mysql> CREATE USER 'mysql-cluster'@'node01-sqlw' IDENTIFIED BY 'mysql@2021';
mysql> CREATE USER 'mysql-cluster'@'node02-sqlw' IDENTIFIED BY 'mysql@2021';
mysql> CREATE USER 'mysql-cluster'@'node03-sqlw' IDENTIFIED BY 'mysql@2021';

mysql> GRANT ALL ON *.* TO 'mysql-cluster'@'node01-sqlw';
mysql> GRANT ALL ON *.* TO 'mysql-cluster'@'node02-sqlw';
mysql> GRANT ALL ON *.* TO 'mysql-cluster'@'node03-sqlw';

mysql> FLUSH PRIVILEGES;

MariaDB [(none)]> select * from mysql.user;

Les utilisateurs autoriser à échanger entre les machines sont créer.

9°) Configurer le nœud node02-sqlw

[root@node02-sqlw ~]# systemctl stop mariadb
[root@node02-sqlw ~]# vi /etc/my.cnf

[mysqld]
wsrep_cluster_address = gcomm://node01-sqlw,node03-sqlw
wsrep_provider = /usr/lib64/galera3/libgalera_smm.so
wsrep_slave_threads = 8
wsrep_cluster_name = SQL-Cluster
wsrep_node_name = node02-sqlw
wsrep_node_address = node02-sqlw/strong>
wsrep_sst_method = xtrabackup-v2
wsrep_sst_auth = mysql-cluster:mysql@2021
[root@node02-sqlw ~]# systemctl start mariadb && systemctl enable mariadb

Vérifier sur node01-sqlw l’ajout du node02.

MariaDB [(none)]> show global status like 'wsrep_cluster_size';

Vérifier que le node02 est bien en mode synchronisé.

[root@node02-sqlw ~]# mysql -u root –p

Ici la mot root est celui répliqué par la synchronisation de node01 => node02.

MariaDB [(none)]> SHOW STATUS LIKE 'wsrep_local_state_comment';

MariaDB [(none)]> select * from mysql.user;

Le nœud node02-sqlw est bien synchronisé au Cluster et à bien récupérer par la synchronisation les users de la table mysql.user.

10°) Configurer le nœud node03-sqlw

[root@node03-sqlw ~]# systemctl stop mariadb
[root@node03-sqlw ~]# vi /etc/my.cnf

[mysqld]
wsrep_cluster_address = gcomm://node01-sqlw,node02-sqlw
wsrep_provider = /usr/lib64/galera3/libgalera_smm.so
wsrep_slave_threads = 8
wsrep_cluster_name = SQL-Cluster
wsrep_node_name = node03-sqlw
wsrep_node_address = node03-sqlw
wsrep_sst_method = xtrabackup-v2
wsrep_sst_auth = mysql-cluster:mysql@2021
[root@node03-sqlw~ ~]#systemctl start mariadb && systemctl enable mariadb

Vérifier sur node01-sqlw l’ajout du node03.

MariaDB [(none)]> show global status like 'wsrep_cluster_size';

Vérifier que le node03 est bien en mode synchronisé.

[root@node03-sqlw ~]# mysql -u root -p

Pareil pour ne node2 , le mot de passe devrait être celui défini sur le node01 et répliqué par la synchronisation des nœuds.

MariaDB [(none)]> SHOW STATUS LIKE 'wsrep_local_state_comment';

MariaDB [(none)]> select * from mysql.user;

A ce stade les trois machines Mysql/Percona sont bien synchronisées entre elles.

11°) Reconfigurer node01-sqlw

Il faut à présent reprendre la configuration de la machine node01-sqlw pour qu’elle synchronise avec les machines node02 et node03. En

[root@node01-sqlw ~]# systemctl stop mariadb
[root@node01-sqlw ~]# vi /etc/my.cnf

[mysqld]
#wsrep_cluster_address = gcomm://
wsrep_cluster_address = gcomm://node02-sqlw,node03-sqlw
wsrep_provider = /usr/lib64/galera3/libgalera_smm.so
wsrep_slave_threads = 8
wsrep_cluster_name = SQL-Cluster
wsrep_node_name = node01-sqlw
wsrep_node_address = node01-sqlw
wsrep_sst_method = xtrabackup-v2
wsrep_sst_auth = mysql-cluster:mysql@2021
[root@node01-sqlw ~]# systemctl start mariadb

12°)  Création de Base sur Node01 et réplication automatique sur les Node02 et Node03

[root@node01-sqlw cp219538]# mysql -u root –p
MariaDB [(none)]> CREATE DATABASE Cluster_Test;
Query OK, 1 row affected (0.008 sec)
MariaDB [(none)]> SHOW DATABASES;

Côté node02-sqlw et node03-sqlw

[root@node02-sqlw ~]# mysql -u root -p -e "SHOW DATABASES;"

Views: 9

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *