Passer au contenu principal

Création d'un cluster MariaDB sous Debian 12

Sur toutes nos machines Debian, nous devons installer MariaDB : 

apt install mariadb-server

Dans le fichier 50-server.cnf on ajouter un skip_name-resolve en dessous de [mysqld] si on a pas de DNS: 

[mysqld]
skip_name_resolve=1

Pour gérer le cluster nous allons passer par l'outil Galera. Quand on installe mariadb-server, Galera s'installe automatiquement. 
On modifie le fichier 60-galera.cnf dans /etc/mysql/mariadb.conf.d et on insère notre configuration uniquement dans notre node1 : 

[galera]
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_cluster_name="NOM DE NOTRE CLUSTER"
wsrep_cluster_address="gcomm://IP1,IP2,IP3"
wsrep_sst_method=rsync
wsrep_node_address="IP DU NODE"
wsrep_node_name="NOM DU NODE"
wsrep_slave_threads = 1
innodb_flush_log_at_trx_commit = 0

On modifie les informations cluster_name, on ajoute nos adresse IP de tout nos node et on met lui donne un nom dans node_name et on met son ip dans node_address. Dans le cluster node2 et node3, on modifie uniquement node_address et node_name. 

On stop sur toutes les machines le service mariadb : 

systemctl stop mariadb

et sur notre node1 on démarre notre cluster : 

galera_new_cluster

On démarre sur nos autres node le service mariadb

systemctl start mariadb

Si on utilise un pare-feu comme UFW il faut créer des regles pour que nos machines puissent communiquer ensemble. 

Sur le node1 : 

ufw allow from IPNODE2 to any port 3306,4567,4568,4444 proto tcp
ufw allow from IPNODE2 to any port 3306,4567,4568,4444 proto udp
ufw allow from IPNODE3 to any port 3306,4567,4568,4444 proto tcp
ufw allow from IPNODE3 to any port 3306,4567,4568,4444 proto udp

Sur le node2 : 

ufw allow from IPNODE1 to any port 3306,4567,4568,4444 proto tcp
ufw allow from IPNODE1 to any port 3306,4567,4568,4444 proto udp
ufw allow from IPNODE3 to any port 3306,4567,4568,4444 proto tcp
ufw allow from IPNODE3 to any port 3306,4567,4568,4444 proto udp

Sur le node3 :

ufw allow from IPNODE1 to any port 3306,4567,4568,4444 proto tcp
ufw allow from IPNODE1 to any port 3306,4567,4568,4444 proto udp
ufw allow from IPNODE2 to any port 3306,4567,4568,4444 proto tcp
ufw allow from IPNODE2 to any port 3306,4567,4568,4444 proto udp

On vérifie que tout nos node son bien connecter a notre cluster : 

mysql
SHOW STATUS LIKE 'wsrep_cluster_size';

Ce qui nous donne cette sortie : 

image.png

Pour redémarrer un cluster MariaDB :

sed -i "/safe_to_bootstrap/s/0/1/" /var/lib/mysql/grastate.dat

puis : 

galera_new_cluster