Vous avez peut-être entendu parler de MariaDB TX et vous vous êtes peut-être demandé de quoi il s'agit ?
Y a-t-il une différence entre celui-ci et MariaDB Server 10.3 ?
Dans cet article de blog, nous aimerions vous donner un aperçu de MariaDB TX et de quoi il s'agit.
En bref :MariaDB TX est un abonnement dans lequel MariaDB combine plusieurs offres pour créer une base de données transactionnelle complète.
La base de données utilisée dans MariaDB TX est MariaDB Server 10.3, qui inclut également Galera Cluster pour la réplication multi-maître synchrone. Pour la couche proxy, MariaDB TX utilise MaxScale.
Concentrons-nous un peu sur ces deux offres principales, en passant en revue leurs fonctionnalités.
Serveur MariaDB 10.3
Il a évolué pour devenir un fork complet, qui implémente de nouvelles fonctionnalités en plus de ce qu'Oracle implémente en amont. MariaDB 10.3 est livré avec une liste de fonctionnalités axées sur l'entreprise.MariaDB Server 10.3 ne remplace plus MySQL.
Compatibilité Oracle
MariaDB 10.3 est livré avec SQL_MODE=ORACLE, qui améliore la compatibilité de la syntaxe SQL utilisée dans MariaDB 10.3 avec Oracle PL/SQL. Les fonctionnalités de compatibilité suivantes sont incluses dans MariaDB TX :
- Paramètres de procédure stockée
- Construction de procédure stockée non-ANSI
- Syntaxe du curseur
- Syntaxe de boucle
- Déclaration de variables
- Héritage des types de données (%TYPE, %ROWTYPE)
- Exceptions de style PL/SQL
- Synonymes des types SQL de base (VARCHAR2, NUMBER, …)
Cela permet une migration plus facile de vos applications des bases de données Oracle vers MariaDB TX.
Jusqu'à 80 % du code Oracle PL/SQL peut désormais être exécuté sur MariaDB sans qu'il soit nécessaire d'introduire des modifications ; cela a un impact sérieux sur la courbe d'apprentissage globale et réduit le temps nécessaire pour réécrire le code hérité pour qu'il s'exécute sur MariaDB TX.
Ce qu'il est également important de garder à l'esprit, MariaDB TX est livré avec un package de support et vous aurez accès à des consultants qui pourront partager avec vous les meilleures pratiques de migration ou même vous aider directement dans le processus de planification pour rendre la transition encore moins gênante.
Améliorations en SQL
MariaDB TX nous apporte également des améliorations dans la syntaxe SQL, y compris de nouvelles fonctionnalités qui devraient être très utiles pour les développeurs comme les fonctions de fenêtre ou les expressions de table communes. De plus, des sous-clauses temporelles pourraient être très utiles car elles permettent d'accéder à plusieurs versions d'une ligne donnée en fonction d'un point précis dans le temps.
Toutes les fonctionnalités sont listées ci-dessous :
- Sous-clauses temporelles (par exemple, AS OF)
- Fonctions d'agrégation définies par l'utilisateur
- Fonctions d'agrégation d'ensembles ordonnés
- INTERSECT/EXCEPT
- Constructeurs de valeurs de table
- Délai de verrouillage DDL/SELECT
- Expressions de table courantes
- Fonctions de la fenêtre
- Fonctions JSON
Moteurs de stockage externe
Le moteur par défaut de MariaDB est InnoDB, un moteur de stockage transactionnel complet.
Il convient à la plupart des charges de travail et fonctionne très bien pour la charge de travail OLTP (traitement des transactions en ligne). Ce n'est cependant pas le seul moteur de stockage disponible dans MariaDB TX. Vous avez accès au moteur Spider, qui peut être utilisé pour partitionner vos données sur plusieurs instances MariaDB tout en maintenant la prise en charge des transactions XA.
Un autre moteur de stockage que vous pouvez utiliser est MyRocks, un moteur optimisé pour le stockage et la réduction de l'amplification en écriture. Testé au combat sur Facebook, basé sur LSN, il convient parfaitement pour stocker de gros volumes de données sur le stockage SSD, réduisant les coûts en mettant en œuvre une compression forte et en réduisant le nombre d'écritures nécessaires pour une charge de travail donnée (et minimisant ainsi l'usure du SSD ).
Pôle Galera
MariaDB TX vous permet d'accéder facilement au cluster Galera, une réplication multimaître virtuellement synchrone. Galera Cluster peut être utilisé pour concevoir des clusters hautement disponibles couvrant le WAN.
Galera Cluster est construit sur le protocole conscient du quorum, ce qui garantit que le partitionnement du réseau ne sera pas un problème et que le cerveau partagé ne devrait plus être un problème. Galera Cluster fournit des moyens de provisionnement automatique des nœuds nouveaux ou défaillants, réduisant ainsi l'encombrement de la gestion.
Fonctionnalités opérationnelles
MariaDB TX fournit également certaines fonctionnalités liées aux tâches opérationnelles. Instant ADD COLUMN aide à réduire l'impact de l'un des changements de schéma les plus courants. Les colonnes invisibles aident à maintenir la compatibilité entre l'ancien et le nouveau code. Les index sur les colonnes virtuelles augmenteront les performances.
Mariabackup
MariaDB TX implémente le chiffrement des données au repos qui inclut le chiffrement des journaux binaires. Pour garantir que les utilisateurs de MariaDB TX puissent bénéficier de sauvegardes sans verrouillage, Mariabackup a été créé. Il s'agit d'un fork amélioré de Xtrabackup, qui ne fonctionnait pas correctement avec les fonctionnalités de chiffrement MariaDB TX. Désormais, vous pouvez profiter de vos sauvegardes physiques à chaud avec Mariabackup tout en cryptant vos données en toute sécurité.
MariaDB MaxScale
En plus de MariaDB 10.3, MariaDB TX est livré avec MaxScale 2.3, un proxy compatible SQL qui peut être utilisé pour créer des environnements hautement disponibles. Il est livré avec de nombreuses fonctionnalités et nous aimerions passer en revue les plus importantes d'entre elles ici.
Basculement automatique
MaxScale peut être utilisé pour suivre l'état du nœud maître MariaDB et, en cas d'échec, effectuer un basculement rapide et automatique. Le basculement automatisé est essentiel pour créer une solution hautement disponible capable de récupérer rapidement après une panne.
Fractionnement lecture-écriture
Le fractionnement lecture-écriture est une fonctionnalité essentielle pour permettre la mise à l'échelle de la lecture. Il suffit que l'application se connecte au MaxScale et elle détectera la topologie, déterminera quel MariaDB agit en tant que maître et lequel agit en tant qu'esclaves. Il acheminera ensuite le trafic en conséquence. Les requêtes SELECT seront envoyées aux esclaves, les écritures seront envoyées au maître. Tout se passe automatiquement, la topologie est surveillée en permanence et en cas de basculement, le trafic sera réacheminé en fonction du changement.
Routage transparent des requêtes
MaxScale, étant le point d'entrée du trafic dans MariaDB TX, peut être utilisé pour faire une séparation lecture-écriture. Parfois, cela ne suffit toujours pas et ce serait formidable d'avoir un moyen de contrôler où une requête donnée doit être envoyée. C'est possible dans MaxScale - vous pouvez faire correspondre les requêtes à l'aide d'expressions régulières, puis décider si elles doivent être envoyées au maître ou aux esclaves. Cela peut aider dans certains cas particuliers où la requête SELECT doit être exécutée sur le maître en raison de problèmes de lecture après écriture ou simplement parce qu'elle doit avoir la vue la plus à jour de l'ensemble de données.
Mise en cache des résultats de la requête
Pour améliorer les performances, la mise en cache des requêtes est indispensable. Le cache de requêtes disponible dans MariaDB ne fonctionnera tout simplement pas dans un environnement hautement simultané car il applique la sérialisation des requêtes, ce qui réduit considérablement les performances, même pour les charges de travail en lecture seule. L'utilisation d'une solution externe pour le cache n'est pas toujours possible :après tout, vous vous retrouverez avec une autre base de données à maintenir, sécuriser et maintenir en bonne santé. Il serait peut-être préférable d'utiliser MaxScale comme cache en supposant que vous l'utilisez déjà pour d'autres fonctionnalités.
Blocage des requêtes
Parfois, les bases de données souffrent d'une requête inefficace, ce qui crée une charge élevée sur le système. Il se peut que la réécriture de cette requête prenne beaucoup trop de temps (quelqu'un devrait la réécrire, tester le changement sur la mise en scène, puis finalement déployer en production), un temps que vous n'avez pas. MaxScale peut vous aider ici avec des fonctionnalités telles que le blocage des requêtes, qui vous permettent essentiellement d'empêcher une requête donnée d'atteindre la base de données. Cette fonctionnalité peut également être utilisée pour créer un pare-feu SQL :supprimez toutes les requêtes qui correspondent à des modèles pointant vers des injections SQL ou d'autres activités potentiellement dangereuses et malveillantes.
Comme vous pouvez le voir, MariaDB TX est livré avec une liste de fonctionnalités et de logiciels conçus pour fonctionner ensemble et créer une base de données hautement disponible et évolutive pour le traitement des données transactionnelles.
Surveillance et gestion d'entreprise pour MariaDB TX
ClusterControl prend entièrement en charge MariaDB TX. Vous pouvez facilement déployer MariaDB Server 10.3 et MaxScale 2.3. ClusterControl prend en charge les configurations de réplication MariaDB ainsi que MariaDB Galera Cluster.
Tant que vous disposez d'une connectivité SSH entre votre instance ClusterControl et les nœuds sur lesquels vous souhaitez déployer MariaDB TX, vous pouvez le faire en quelques clics.
Vous devez d'abord définir comment ClusterControl atteindra les nœuds MariaDB TX.
Ensuite, choisissez MariaDB comme fournisseur et optez pour l'une des versions prises en charge. Transmettez le mot de passe root MariaDB.
Enfin, décidez de la topologie. Vous pouvez déployer MariaDB TX dans une configuration maître - maître, actif - veille avec des esclaves supplémentaires. La réplication utilisera MariaDB GTID.
Pour MariaDB Galera Cluster, la première étape est exactement la même, il vous suffit ensuite de choisir MariaDB comme fournisseur, de décider de la version et de définir des nœuds dans MariaDB Galera Cluster :
Avec les clusters déployés, vous pouvez utiliser la puissance de ClusterControl pour surveiller et gérer vos clusters MariaDB TX.Par exemple, l'ajout d'équilibreurs de charge MaxScale se fait en quelques clics :
Une fois déployé, vous pouvez gérer votre MaxScale à l'aide de ClusterControl :
Vous pouvez également mettre à l'échelle votre cluster Galera en ajoutant de nouveaux nœuds Galera ou des esclaves de réplication asynchrone. Vous pouvez ajouter des esclaves ou des esclaves retardés à vos configurations de réplication, ou effectuer des changements de topologie en transformant un esclave en maître et en réasservissant le reste de la configuration. ClusterControl surveillera le cluster et tentera de récupérer les nœuds ou clusters défaillants en cas d'incident. Pour les sauvegardes, ClusterControl peut vous aider à définir un calendrier de sauvegarde en utilisant à la fois mysqldump et Mariabackup afin que vous puissiez facilement bénéficier des fonctionnalités de chiffrement de MariaDB TX.
Pour la partie monitoring et trending, ClusterControl peut être utilisé soit en mode sans agent :
Ou il peut être utilisé avec Prometheus et des agents pour fournir un meilleur aperçu de ce qui se passe dans le cluster MariaDB TX.
Nous espérons que cet article de blog d'introduction vous a aidé à comprendre ce qu'est MariaDB TX et comment ClusterControl peut vous aider à le gérer.