Créer un cluster MariaDB
Prérequis :
- 5 serveur Rocky Linux ou RHEL
- MariaDB
- IP de nos machines : 192.168.1.1, 192.168.1.2, 192.168.1.3, 192.168.1.4, 192.168.1.5
Création de notre maitre
On commence à choisir notre premier serveur qui fera office de maitre pour le début. Voici donc mes machines virtuelle :
Bien évidement, il est pas nécessaire d'avoir 5 serveur MariaDB. Simplement 2 pourrait largement suffire.
Dans notre première machine (Gluster1) on installe mariadb, socat, galera et rsync si vous avez une version minimal de RockyLinux.
dnf install rsync galera mariadb-server-galera mariadb-server mariadb
On lance ensuite notre MariaDB au lancement de notre machine et on le lance.
systemctl enable --now mariadb
On lance la configuration de notre MariaDB en mettant un mot de passe sécuriser :
mysql_secure_installation
Une fois fini on va dans notre dossier my.cnf.d et on modifie le fichier mariadb-server.cnf et on rajoute en dessous de [galera] le texte ci-dessous :
nano /etc/my.cnf.d/mariadb-server.cnf
#Texte à rajouter
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address="gcomm://192.168.1.1,192.168.1.2,192.168.1.3,192.168.1.4,192.168.1.5,"
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
wsrep_cluster_name="Tutobdd"
wsrep_sst_method=rsync
wsrep_node_address="192.168.1.1"
wsrep_node_name="Gluster1"
bien évidement on modifie les adresses ip selon votre configuration, le cluster name, le node address par votre ip maitre et le node name, pour ma part c'est le nom de ma machine.
On rajoute ensuite dans notre fichier hosts ces informations :
#Attention de bien mettre les noms de vos nodes
192.168.1.1 Gluster1
192.168.1.2 Gluster2
192.168.1.3 Gluster3
192.168.1.4 Gluster4
192.168.1.5 Gluster5
On arrete notre MariaDB et on créer notre cluster.
systemctl stop mariadb
galera_new_cluster
Ajouter nos autres machines
Sur nos autres machines on installe tout les logiciels nécessaire pour faire fonctionner notre cluster.
dnf install rsync mariadb galera
On lance le MariaDB et on fait la configuration de notre MariaDB. Vous pouvez mettre un mot de passe different du serveur.
systemctl enable --now mariadb
mysql_secure_installation
On modifie notre fichier mariadb-server.cnf
nano /etc/my.cnf.d/mariadb-server.cnf
#Texte à rajouter en bas de [galera]
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address="gcomm://192.168.1.1,192.168.1.2,192.168.1.3,192.168.1.4,192.168.1.5,"
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
wsrep_cluster_name="Tutobdd"
wsrep_sst_method=rsync
wsrep_node_address="192.168.1.2"
wsrep_node_name="Gluster2"
et on modifie le node adresse et le node name.
On redemarre notre MariaDB sur chaque machine et apres avoir mis le configuration sur toutes nos machines on peut ce reconnecter a notre maitre.
Vérifier que notre cluster fonctionne
Pour verifier que notre cluster fonctionne on retourne sur notre maitre et on ce connecte avec mysql
mysql -u root -p
et on tape cette commande :
SHOW STATUS LIKE 'wsrep_cluster_size';
ce qui doit donner le bon nombre de machine dans notre cluster
On peut maintenant créer des bases de données et les voir sur toutes les machines de notre cluster. On peut aussi arreter des machines pour faire des tests de resynchronisation et voir que tout fonctionne bien meme si notre "maitre" tombe.