La mise en cluster de bases de données est le processus consistant à combiner plusieurs serveurs en les connectant à une seule base de données. Le clustering améliore la disponibilité de votre base de données en répartissant la charge sur différents serveurs. Si un serveur tombe en panne, d'autres sont rapidement disponibles pour continuer à servir.
MariaDB Galera est une solution de clustering multi-maîtres qui vous permet de lire et d'écrire sur n'importe quel nœud du cluster. Avec MariaDB Galera, une modification apportée à un nœud est répliquée sur tous les nœuds. MariaDB Galera prend en charge les moteurs de stockage XtraDB/InnoDB et n'est disponible que sur Linux.
Caractéristiques
- Topologie multimaître actif-actif
- Rejoindre un nœud automatiquement
- Capacité de lire et d'écrire sur n'importe quel nœud de cluster
- Contrôle automatique des membres, suppression des nœuds défaillants du cluster
- Provisionnement automatique des nœuds
Dans ce didacticiel, nous allons vous montrer comment configurer un cluster MariaDB Galera à trois nœuds sur Ubuntu 18.04.
Prérequis
- Trois nouveaux VPS Ubuntu 18.04 sur la plate-forme cloud Atlantic.Net.
- Un mot de passe root configuré sur tous les serveurs.
Pour les besoins de ce tutoriel, nous utiliserons trois serveurs avec la configuration suivante :
serveur1 :192.168.0.101
serveur2 :192.168.0.102
serveur3 :192.168.0.103
Étape 1 - Créer un serveur cloud Atlantic.Net
Tout d'abord, connectez-vous à votre serveur Atlantic.Net Cloud. Créez un nouveau serveur en choisissant Ubuntu 18.04 comme système d'exploitation avec au moins 2 Go de RAM. Connectez-vous à votre serveur cloud via SSH et connectez-vous à l'aide des informations d'identification mises en évidence en haut de la page.
Une fois que vous êtes connecté à votre serveur Ubuntu 18.04, exécutez la commande suivante pour mettre à jour votre système de base avec les derniers packages disponibles.
apt-get update -y
Étape 2 - Installer MariaDB Server sur tous les serveurs
Tout d'abord, ajoutez la clé du référentiel MariaDB avec la commande suivante :
apt-get install software-properties-common apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
Ensuite, ajoutez le référentiel à l'aide de la commande suivante :
add-apt-repository "deb [arch=amd64,arm64,ppc64el] http://mariadb.mirror.liquidtelecom.com/repo/10.4/ubuntu $(lsb_release -cs) main"
Une fois le référentiel ajouté, mettez à jour le référentiel avec la commande suivante :
apt-get update -y
Enfin, installez le serveur MariaDB avec la commande suivante :
apt-get install mariadb-server -y
À partir de la version 10.1, la fonctionnalité de cluster Galera est intégrée à MariaDB. Le package MariaDB Galera Server est automatiquement installé avec le serveur MariaDB.
Vous pouvez le configurer avec la commande suivante :
mysql_secure_installation
Répondez à toutes les questions, comme indiqué ci-dessous :
Enter current password for root (enter for none): Provide your root user password Switch to unix_socket authentication [Y/n] n Change the root password? [Y/n] Y New password: Re-enter new 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
Remarque :Veuillez répéter les étapes ci-dessus sur les trois serveurs.
Étape 3 – Configurer chaque serveur du cluster
À ce stade, nous avons installé et configuré le serveur MariaDB sur chaque serveur. Ensuite, vous devrez configurer le cluster Galera pour communiquer entre les serveurs. Pour ce faire, vous devrez créer un fichier de configuration commun sur chaque serveur.
Dans cette section, nous allons vous montrer comment configurer chaque serveur du cluster.
Configurer le premier serveur
Tout d'abord, connectez-vous au premier serveur et créez un fichier de configuration Galera avec la commande suivante :
nano /etc/mysql/conf.d/galera.cnf
Ajoutez les lignes suivantes (assurez-vous d'entrer vos propres adresses IP de serveur) :
[mysqld] binlog_format=ROW default-storage-engine=innodb innodb_autoinc_lock_mode=2 bind-address=0.0.0.0 # Galera Provider Configuration wsrep_on=ON wsrep_provider=/usr/lib/galera/libgalera_smm.so # Galera Cluster Configuration wsrep_cluster_name="galera_cluster" wsrep_cluster_address="gcomm://192.168.0.101,192.168.0.102,192.168.0.103" # Galera Synchronization Configuration wsrep_sst_method=rsync # Galera Node Configuration wsrep_node_address="192.168.0.101" wsrep_node_name="server1"
Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, vous pouvez passer au deuxième serveur.
Configurer le deuxième serveur
Ensuite, connectez-vous au deuxième serveur et créez un fichier de configuration Galera avec la commande suivante :
nano /etc/mysql/conf.d/galera.cnf
Ajoutez les lignes suivantes :
[mysqld] binlog_format=ROW default-storage-engine=innodb innodb_autoinc_lock_mode=2 bind-address=0.0.0.0 # Galera Provider Configuration wsrep_on=ON wsrep_provider=/usr/lib/galera/libgalera_smm.so # Galera Cluster Configuration wsrep_cluster_name="galera_cluster" wsrep_cluster_address="gcomm://192.168.0.101,192.168.0.102,192.168.0.103" # Galera Synchronization Configuration wsrep_sst_method=rsync # Galera Node Configuration wsrep_node_address="192.168.0.102" wsrep_node_name="server2"
Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, vous pouvez passer au troisième serveur.
Configurer le troisième serveur
Ensuite, connectez-vous au troisième serveur et créez un fichier de configuration Galera avec la commande suivante :
nano /etc/mysql/conf.d/galera.cnf
Ajoutez les lignes suivantes :
[mysqld] binlog_format=ROW default-storage-engine=innodb innodb_autoinc_lock_mode=2 bind-address=0.0.0.0 # Galera Provider Configuration wsrep_on=ON wsrep_provider=/usr/lib/galera/libgalera_smm.so # Galera Cluster Configuration wsrep_cluster_name="galera_cluster" wsrep_cluster_address="gcomm://192.168.0.101,192.168.0.102,192.168.0.103" # Galera Synchronization Configuration wsrep_sst_method=rsync # Galera Node Configuration wsrep_node_address="192.168.0.103" wsrep_node_name="server3"
Enregistrez et fermez le fichier lorsque vous avez terminé.
À ce stade, nous avons configuré les trois serveurs pour qu'ils communiquent entre eux.
Étape 4 - Initialiser le cluster Galera
Avant de démarrer le cluster, vous devrez arrêter le service MariaDB sur tous les serveurs.
Exécutez la commande suivante pour arrêter le service MariaDB sur tous les serveurs.
systemctl stop mariadb
Ensuite, initialisez le cluster dans le premier nœud avec la commande suivante :
galera_new_cluster
La commande ci-dessus démarrera le cluster et ajoutera server1 au cluster.
Vous pouvez le vérifier avec la commande suivante :
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'" Enter password:
Fournissez votre mot de passe root et appuyez sur Entrée. Vous devriez voir le résultat suivant :
+--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | wsrep_cluster_size | 1 | +--------------------+-------+
Ensuite, allez sur le deuxième serveur et démarrez le service MariaDB :
systemctl start mariadb
Ensuite, vérifiez la taille de votre cluster avec la commande suivante :
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'" Enter password:
Fournissez votre mot de passe root et appuyez sur Entrée. Vous devriez voir que le deuxième serveur a rejoint le cluster.
+--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | wsrep_cluster_size | 2 | +--------------------+-------+
Ensuite, allez sur le troisième serveur et démarrez le service MariaDB :
systemctl start mariadb
Ensuite, vérifiez la taille de votre cluster avec la commande suivante :
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'" Enter password:
Fournissez votre mot de passe root et appuyez sur Entrée. Vous devriez voir que le troisième serveur a rejoint le cluster.
+--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | wsrep_cluster_size | 3 | +--------------------+-------+
Étape 5 – Tester la réplication du cluster Galera
Votre cluster Galera est maintenant opérationnel. Il est temps de tester et de voir si la réplication fonctionne.
Pour ce faire, créez une base de données sur le premier serveur et vérifiez si elle a été répliquée sur d'autres serveurs.
Sur le serveur1, connectez-vous au shell MySQL avec la commande suivante :
mysql -u root -p
Indiquez votre mot de passe root lorsque vous y êtes invité, puis créez une base de données avec la commande suivante :
create database replicadb; create database mydb;
Ensuite, quittez le shell MySQL avec la commande suivante :
exit;
Sur le serveur2, connectez-vous au shell MySQL avec la commande suivante :
mysql -u root -p
Fournissez votre mot de passe root lorsque vous y êtes invité et vérifiez si la base de données existe.
show databases;
Vous devriez obtenir le résultat suivant :
+--------------------+ | Database | +--------------------+ | information_schema | | mydb | | mysql | | performance_schema | | replicadb | +--------------------+
Sur le serveur3, connectez-vous au shell MySQL avec la commande suivante :
mysql -u root -p
Fournissez votre mot de passe root lorsque vous y êtes invité et vérifiez si la base de données existe.
show databases;
Vous devriez obtenir le résultat suivant :
+--------------------+ | Database | +--------------------+ | information_schema | | mydb | | mysql | | performance_schema | | replicadb | +--------------------+
La sortie ci-dessus indique clairement que la réplication fonctionne correctement.
Conclusion
Toutes nos félicitations! Vous avez installé et configuré avec succès un cluster MariaDB Galera à trois nœuds sur Ubuntu 18.04 VPS. Vous devriez maintenant avoir suffisamment de connaissances pour configurer un cluster MariaDB Galera dans un environnement de production. Vous pouvez visiter la documentation de MariaDB Galera pour plus d'informations.