MariaDB
 sql >> Base de données >  >> RDS >> MariaDB

Comment déployer MariaDB Cluster 10.5 pour une haute disponibilité

 

Le déploiement de MariaDB Cluster 10.5 est pris en charge dans ClusterControl depuis la version 1.8.1.

MariaDB 10.5 est équipé de :

  • Plus de privilèges granulaires

  • Améliorations des performances d'InnoDB

  • Prise en charge complète du GTID pour Galera Cluster

  • Plus de métadonnées pour la réplication et les journaux binaires

  • Plus d'instructions de syntaxe SQL (instruction RETURNING pour INSERT, EXCEPT ALL et INTERSECT ALL, …)

  • Mises à jour du schéma de performances pour correspondre à MySQL 5.7

  • Le moteur de stockage S3

Vous pouvez vérifier plus en détail sur notre précédent blog 

Pour plus de détails sur cette version particulière, consultez les nouveautés de MariaDB 10.5 ? Certaines des modifications les plus importantes de la version 10.4 à la version 10.5 incluent :

  • Cohérence GTID 

  • Incohérence de cluster/vote d'erreur 

  • opérations DDL non bloquantes (disponible uniquement sur la version entreprise)

  • Boîte noire (disponible uniquement sur la version entreprise) 

  • Mise à jour de sa bibliothèque Galera wsrep, dont la version 26.4.6 est la dernière version

Initialement, la prise en charge des transactions XA était prévue pour cette version (ne vous y trompez pas car les transactions XA sont prises en charge par MariaDB Server mais pas sur Galera Cluster). Cependant, en raison de certaines implications sur les performances, MariaDB Galera Cluster ne prend pas en charge les transactions XA.

Dans ce blog, nous expliquerons comment déployer MariaDB Cluster 10.5 pour une haute disponibilité.

Cluster MariaDB pour la haute disponibilité

Le cluster MariaDB est essentiellement un cluster Galera qui utilise l'implémentation MariaDB comme couche de base de données pour s'interfacer avec le moteur InnoDB ou XtraDB. MariaDB Galera Cluster est un cluster multimaître virtuellement synchrone pour MariaDB. Il est disponible uniquement sur Linux et prend en charge les moteurs de stockage XtraDB/InnoDB (bien qu'il existe une prise en charge expérimentale de MyISAM — voir la variable système wsrep_replicate_myisam). Lorsque Galera Cluster est utilisé, les lectures et écritures de la base de données peuvent être dirigées vers n'importe quel nœud. Tout nœud individuel peut être perdu sans interruption des opérations et sans recourir à des procédures de basculement complexes.

Grâce à la nature de Galera adaptée au sein de MariaDB Cluster, il s'agit d'une solution à haute disponibilité avec réplication synchrone, basculement et resynchronisation. Il offre les avantages d'aucune perte de données, d'aucun décalage d'esclave, d'une évolutivité en lecture et en écriture et d'une haute disponibilité dans différents centres de données.

Déployer MariaDB Cluster 10.5

MariaDB fournit une configuration simple et simple pour installer votre MariaDB Cluster 10.5. Le processus manuel peut être fastidieux, mais avec les scripts automatisés fournis par MariaDB, les référentiels peuvent être configurés en fonction de la version de votre base de données cible, du type de système d'exploitation et de la version du système d'exploitation.

Pour cet exercice, j'ai la configuration Galera Cluster à 3 nœuds suivante avec les adresses IP suivantes :192.168.40.210, 192.168.40.220, 192.168.40.230.

Configurer votre référentiel

Comme mentionné précédemment, MariaDB a un script nommé mariadb_repo_setup, et il est facile à utiliser. Vous pouvez spécifier la version cible de votre base de données, le type de système d'exploitation et votre version de système d'exploitation.

Par exemple, j'installe avec EL 8 :

curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup |  sudo bash -s -- --mariadb-server-version="mariadb-10.5" --os-type=rhel --os-version=8

ou l'installer dans Ubuntu Focal Fossa,

curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup |  sudo bash -s -- --mariadb-server-version="mariadb-10.5" --os-type=ubuntu --os-version=focal

Notez que lors de l'utilisation du script mariadb_repo_setup, il nécessite le package apt-transport-https comme dépendance. Installez donc ce package avant de pouvoir profiter du script mariadb_repo_setup.

apt update

apt install apt-transport-https

Maintenant, exécutez la commande sur vos trois nœuds en fonction de leur système d'exploitation. Bien sûr, la version de MariaDB doit être 10.5.

Configuration MySQL

Le fichier de configuration dépend des ressources de votre serveur, du type d'environnement de serveur et de l'adresse IP attribuée. Pour ce blog, vous pouvez utiliser cette configuration de configuration MariaDB Cluster/PXC prête pour la production que nous avons utilisée pour déployer dans nos bases de données Percona XtraDB Cluster/MariaDB Cluster à l'aide de ClusterControl. Les variables notables dont vous avez besoin ou qui sont susceptibles d'être modifiées sont les suivantes :

  • innodb_buffer_pool_size — Définissez le pool de mémoire tampon de 70 % à 80 % de la RAM disponible de votre serveur

  • wsrep_provider — Chemin de la bibliothèque compilée Galera. Pour Enterprise Linux, le chemin doit être /usr/lib64/galera-4/libgalera_smm.so. Alors que Debian/Ubuntu est dans /usr/lib/galera/libgalera_smm.so.

  • wsrep_node_address — Il s'agit de l'adresse IP du nœud

  • wsrep_sst_method — Soit vous pouvez le changer, mais nous vous recommandons d'utiliser mariabackup. Les valeurs possibles que vous pouvez choisir sont rsync, mysqldump, xtrabackup, xtrabackup-v2, mariabackup.

  • wsrep_cluster_name — Le nom de votre cluster MariaDB. Il doit être identique à tous vos nœuds dans un seul cluster MariaDB.

  • wsrep_cluster_address — Ceci contient les adresses de vos nœuds au sein du cluster. Il doit s'agir d'une adresse IP, d'un nom d'hôte ou d'un nom de domaine complet valide.

  • wsrep_node_name — Le nom de votre nœud. Le nom peut être utilisé dans wsrep_sst_donor en tant que donateur préféré. Notez que plusieurs nœuds d'un cluster peuvent avoir le même nom.

Pour exécuter SST, l'utilisateur et le mot de passe pour les sections suivantes [mysqldump], [xtrabackup] et [mysqld] peuvent changer si vous le souhaitez. Pour cet exercice, restons simples et vous pouvez simplement laisser les valeurs telles quelles.

Maintenant, copiez le fichier de configuration et placez-le dans /etc/my.cnf. Faites cela pour tous vos trois nœuds Galera.

Installation des packages requis

Installez les packages pour les trois nœuds Galera. Suivez la commande ci-dessous en fonction de votre environnement de système d'exploitation cible.

Pour RHEL/Rocky/AlmaLinux :

sudo yum install MariaDB-server MariaDB-client galera-4 MariaDB-backup

Pour Debian/Ubuntu :

sudo apt update

sudo apt-get install mariadb-server galera-4 mariadb-client libmariadb3 mariadb-backup mariadb-common

Une fois l'installation terminée, arrêtez le processus MariaDB et initialisez le cluster en tant que nœud unique. Cela amorcera votre Galera Cluster. À ce stade, je l'exécute sur le nœud 192.168.40.210.

$ /usr/bin/galera_new_cluster

Créer un utilisateur SST/IST

Créez l'utilisateur de secours, qui sera utilisé pour SST ou IST. Exécutez uniquement les instructions SQL ci-dessous sur le premier nœud sur lequel vous avez lancé le cluster. À ce stade, je l'ai exécuté dans le nœud 192.168.40.210.

CREATE USER [email protected] IDENTIFIED BY 'backuppassword';

GRANT PROCESS, RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'backupuser'@'localhost';

À ce stade, nous sommes déjà configurés et prêts à connecter les nœuds restants.

Démarrer le serveur MariaDB

Maintenant, nous avons déjà configuré le premier nœud. Nous sommes prêts à connecter les nœuds restants. Simplement, démarrez simplement le service MariaDB. Exécutez simplement la commande ci-dessous :

systemctl start mariadb

Exécutez la commande pour les nœuds restants un par un. À ce stade, tous les nœuds sont synchronisés.

Ajout de stéroïdes pour votre cluster MariaDB 10.5 pour une haute disponibilité

Il est probable que le déploiement de MariaDB Cluster 10.5 pour une haute disponibilité ne réponde pas à vos besoins dans une configuration de production. L'ajout de plus de stéroïdes, comme l'installation de HAProxy avec Keepalived pour votre redondance, apportera une plus grande disponibilité pour votre environnement de base de données.

Configurer HAProxy et Keepalived pour obtenir la topologie et l'environnement souhaités peut ajouter plus de tracas. Cependant, vous pouvez automatiser cela avec ClusterControl. À l'aide de ClusterControl, vous pouvez déployer votre cluster MariaDB 10.5 et ajouter d'autres solutions d'équilibrage de charge, telles que ProxySQL, MaxScale ou garbd. Vous pouvez ajouter Keepalived à votre cluster pour ajouter des solutions de redondance et de basculement automatique en cas de sinistre.

Vous pouvez télécharger une version d'essai gratuite de ClusterControl qui vous permettra de déployer ces solutions HA et de gérer l'ensemble de vos opérations de base de données à partir d'un seul écran. Nous expliquerons comment déployer votre cluster MariaDB 10.5 avec ClusterControl.

Déployer le cluster MariaDB 10.5 avec ClusterControl

Une fois que vous avez installé ClusterControl, cliquez sur l'icône dans le coin supérieur droit et vous verrez l'assistant de déploiement comme ci-dessous.

Vous pouvez le configurer facilement. Suivez simplement la série d'étapes en fonction du flux de l'interface utilisateur.

Déployer HAProxy pour la gestion de l'équilibrage de charge

À ce stade, je suppose que vous avez configuré votre MariaDB Cluster 10.5. Maintenant, déployons le HAProxy :

Vous pouvez également accéder à Gérer → Load Balancer → HAProxy.

Ensuite, sélectionnez ou tapez l'adresse où le HAProxy doit être installé et sélectionnez vos nœuds Galera qui seront surveillés par le HAProxy. Voir l'exemple ci-dessous :

Ajoutez au moins deux déploiements de HAProxy pour augmenter la disponibilité. Chaque fois que l'un de vos HAProxy tombe en panne, votre application est acheminée vers l'autre nœud encore disponible ou en ligne. Ceci est très important, en particulier lors de la gestion des mises à niveau de la base de données ou du système, en dehors des événements catastrophiques ou de catastrophe.

Déployer Keepalived

Vous utiliserez le même processus ci-dessus pour déployer Keepalived, comme indiqué ci-dessous :

Si vous avez remarqué, j'ai deux instances HAProxy pour lesquelles je vais installer Keepalived , qui doit être présent dans chaque nœud où HAProxy est en cours d'exécution.

Finaliser votre cluster MariaDB 10.5 avec la haute disponibilité

Maintenant que tout est configuré, vous devriez avoir un environnement qui ressemble à ceci :

Conclusion

Cette configuration pour votre cluster MariaDB 10.5 vous offre les avantages d'atteindre une haute disponibilité avec plusieurs neuf. HAProxy vous offre plus de capacités d'équilibrage de charge avec sa séparation en lecture et en écriture, et Keepalived garantit qu'en cas de décès de l'un de vos HAProxy, il basculera vers le prochain nœud disponible. Votre application se connectera uniquement à l'adresse IP virtuelle (qui suit le VRRP) et ne nécessitera pas de configuration ou d'installation supplémentaire.

Pour ajouter encore plus de flexibilité et de séparation lecture/écriture en ne jouant que sur un seul port, vous pouvez remplacer HAProxy par ProxySQL. Obtenir une configuration parfaite pour une haute disponibilité peut être difficile, et chacun a ses inconvénients. Cependant, ce qui compte le plus, c'est qu'il n'y ait que peu ou pas de temps d'arrêt.

Pour plus de conseils sur la création d'une configuration MariaDB hautement disponible, consultez cet article sur le déploiement de la réplication MariaDB.

Si vous souhaitez vous tenir au courant des tendances et des meilleures pratiques en matière de bases de données, abonnez-vous à notre newsletter et suivez-nous sur Twitter et LinkedIn.