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 :
Pour redémarrer un cluster MariaDB :
sed -i "/safe_to_bootstrap/s/0/1/" /var/lib/mysql/grastate.dat
puis :
galera_new_cluster