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