MariaDB Server n'est plus une simple imitation de MySQL. Il est devenu un fork mature, qui implémente de nouvelles fonctionnalités similaires à ce que les systèmes de bases de données propriétaires offrent en amont. MariaDB 10.3 étend considérablement la liste des fonctionnalités d'entreprise et, avec le nouveau SQL_MODE=Oracle, devient un choix intéressant pour les entreprises qui souhaitent migrer leurs bases de données Oracle vers une base de données open source. Cependant, la gestion opérationnelle est un domaine où il y a encore du rattrapage à faire, et MariaDB exige que vous créiez vos propres scripts.
Peut-être une bonne occasion de se pencher sur un système d'automatisation ?
Les procédures automatisées sont précises et cohérentes. Ils peuvent vous offrir la répétabilité dont vous avez tant besoin afin de minimiser le risque de changement dans les systèmes de production. Cependant, comme les bases de données open source modernes se développent si rapidement, il est plus difficile de maintenir vos systèmes de gestion à la hauteur de toutes les nouvelles fonctionnalités.
La prochaine étape naturelle consiste à rechercher des plates-formes d'automatisation. Il existe de nombreuses plates-formes que vous pouvez utiliser pour déployer des systèmes. Puppet, Chef et Ansible sont probablement les meilleurs exemples de cette nouvelle tendance. Ces plates-formes sont adaptées au déploiement rapide de divers services logiciels. Ils sont parfaits pour les déploiements, mais vous obligent toujours à maintenir le code, à couvrir les changements de fonctionnalités et, généralement, ils ne couvrent qu'un seul aspect de votre travail. Des éléments tels que les sauvegardes, les performances et la maintenance nécessitent toujours des outils ou des scripts externes.
De l'autre côté, nous avons des plates-formes cloud, avec des interfaces raffinées et une variété de services supplémentaires pour une expérience entièrement gérée. Cependant, cela peut ne pas être faisable; par exemple, des environnements hybrides dans lesquels vous utilisez peut-être le cloud, mais avec une empreinte sur site importante.
Alors, que diriez-vous d'une couche de gestion dédiée pour vos bases de données MariaDB ?
ClusterControl a été conçu pour automatiser le déploiement et la gestion de MariaDB ainsi que d'autres bases de données open source. Au cœur de ClusterControl se trouve une fonctionnalité qui vous permet d'automatiser les tâches de base de données que vous devez effectuer régulièrement, comme le déploiement de nouvelles instances et clusters de base de données, la gestion des sauvegardes, la haute disponibilité et le basculement, les changements de topologie, les mises à niveau, la mise à l'échelle de nouveaux nœuds et plus encore.
Installation de ClusterControl
Pour démarrer avec ClusterControl, vous avez besoin d'une machine virtuelle ou d'un hôte dédié. La configuration requise pour la machine virtuelle et les systèmes pris en charge est décrite ici. Au minimum, vous pouvez démarrer à partir d'une minuscule machine virtuelle de 2 Go de RAM, de 2 cœurs de processeur et de 20 Go d'espace de stockage, sur site ou dans le cloud.
La principale méthode d'installation consiste à télécharger un assistant d'installation qui vous guide à travers toutes les étapes (configuration du système d'exploitation, téléchargement et installation du package, création de métadonnées, etc.).
Pour les environnements sans accès Internet, vous pouvez utiliser le processus d'installation hors ligne.
ClusterControl est sans agent, vous n'avez donc pas besoin d'installer de logiciel supplémentaire. Il nécessite uniquement un accès SSH aux hôtes de la base de données. Il prend également en charge la surveillance basée sur les agents pour des données de surveillance à plus haute résolution.
Pour configurer SSH sans mot de passe sur tous les nœuds cibles (ClusterControl et tous les hôtes de base de données), exécutez les commandes suivantes sur le serveur ClusterControl :
$ ssh-keygen -t rsa # press enter on all prompts
$ ssh-copy-id -i ~/.ssh/id_rsa [ClusterControl IP address]
$ ssh-copy-id -i ~/.ssh/id_rsa [Database nodes IP address] # repeat this to all target database nodes
L'un des moyens les plus pratiques d'essayer le contrôle de cluster peut être l'option de l'exécuter dans un conteneur Docker.
docker run -d --name clustercontrol \
--network db-cluster \
--ip 192.168.10.10 \
-h clustercontrol \
-p 5000:80 \
-p 5001:443 \
-v /storage/clustercontrol/cmon.d:/etc/cmon.d \
-v /storage/clustercontrol/datadir:/var/lib/mysql \
-v /storage/clustercontrol/sshkey:/root/.ssh \
-v /storage/clustercontrol/cmonlib:/var/lib/cmon \
-v /storage/clustercontrol/backups:/root/backups \
severalnines/clustercontrol
Après un déploiement réussi, vous devriez pouvoir accéder à l'interface utilisateur Web de ClusterControl à l'{adresse IP de l'hôte} :{port de l'hôte}, par exemple :
HTTP: http://192.168.10.100:5000/clustercontrol
HTTPS: https://192.168.10.100:5001/clustercontrol
Installation du cluster MariaDB
Une fois entré dans l'interface de ClusterControl, la première chose à faire est de déployer une nouvelle base de données ou d'en importer une existante. La version 1.7.2 a introduit la prise en charge de la version 10.3 (avec 10.0, 10.1, 10.2). Dans la version 1.7.3 qui a été publiée cette semaine, nous pouvons voir l'amélioration du déploiement de l'installation dans le cloud.
ClusterControl :Déployer/ImporterAu moment de la rédaction de ce blog, les versions actuelles sont 10.3.16. Les derniers packages sont récupérés par défaut. Sélectionnez l'option "Déployer le cluster de bases de données" et suivez les instructions qui s'affichent.
Il est maintenant temps de fournir les données nécessaires à la connexion entre les nœuds ClusterControl et DB. À cette étape, vous disposerez de machines virtuelles ou d'images de système d'exploitation propres que vous utilisez au sein de votre organisation. Lors du choix de MariaDB, nous devons spécifier l'utilisateur, la clé ou le mot de passe et le port pour se connecter en SSH à nos serveurs.
ClusterControl :Déployer le cluster de bases de donnéesAprès avoir configuré les informations d'accès SSH, nous devons entrer les données pour accéder à notre base de données, pour MariaDB qui sera la racine du superutilisateur. Nous pouvons également spécifier quel référentiel utiliser. Vous pouvez avoir trois types de référentiels lors du déploiement d'un serveur/cluster de base de données à l'aide de ClusterControl :
- Utilisez le référentiel des fournisseurs. Provisionnez le logiciel en configurant et en utilisant le référentiel de logiciels préféré du fournisseur de base de données. ClusterControl installera la dernière version de ce qui est fourni par le référentiel du fournisseur de base de données.
- Ne configurez pas de référentiels de fournisseurs. Aucun référentiel ne sera configuré par ClusterControl. ClusterControl s'appuiera sur la configuration du système (vos fichiers de référentiel par défaut).
- Créez et mettez en miroir le référentiel du fournisseur de base de données actuel, puis déployez-le à l'aide du référentiel miroir local. Cela vous permet de "geler" les versions actuelles des packages logiciels.
Lorsque tout est réglé, appuyez sur le bouton de déploiement. Le processus de déploiement prendra également en charge l'installation d'outils supplémentaires fournis par MariaDB comme mariabackup et des outils de fournisseurs externes, populaires dans l'administration de bases de données.
Importer un nouveau cluster
Nous avons également la possibilité de gérer une configuration existante en l'important dans ClusterControl. Un tel environnement peut être créé par ClusterControl ou d'autres méthodes (puppet, chef, ansible, docker …). Le processus est simple et ne nécessite pas de connaissances spécialisées.
Tout d'abord, nous devons entrer les informations d'identification d'accès SSH à nos serveurs de base de données existants. Ensuite, nous entrons les informations d'identification d'accès à notre base de données, le répertoire de données du serveur et la version. Nous ajoutons les nœuds par IP ou nom d'hôte, de la même manière que lors du déploiement, et appuyons sur Importer. Une fois la tâche terminée, nous sommes prêts à gérer notre cluster depuis ClusterControl. À ce stade, nous pouvons également définir les options de récupération automatique du nœud ou du cluster.
ClusterControl :Importer un cluster de base de données 10.3 existantMise à l'échelle de MariaDB, ajout de nœuds supplémentaires au cluster de bases de données
Avec ClusterControl, ajouter plus de serveurs au serveur est une étape facile. Vous pouvez le faire à partir de l'interface graphique ou de la CLI. Pour les utilisateurs plus avancés, vous pouvez utiliser ClusterControl Developer Studio et écrire une condition de base de ressources pour développer automatiquement votre cluster.
ClusterControl :ajout d'un nœud MariaDBClusterControl prend en charge une option permettant d'utiliser une sauvegarde existante, il n'est donc pas nécessaire de submerger le nœud maître de production avec un travail supplémentaire.
Sécuriser MariaDB
L'installation par défaut de MariaDB est livrée avec une sécurité simplifiée. Cela a été amélioré avec les versions récentes, mais les systèmes de production nécessitent toujours des ajustements dans la configuration my.cnf par défaut. Les déploiements de ClusterControl sont livrés avec des paramètres my.cnf autres que ceux par défaut (différents pour différents types de cluster).
ClusterControl supprime les erreurs humaines et donne accès à une suite de fonctionnalités de sécurité, pour protéger automatiquement vos bases de données contre les piratages et autres menaces.
ClusterControl :Panneau de sécuritéClusterControl active la prise en charge SSL pour les connexions MariaDB. L'activation de SSL ajoute un autre niveau de sécurité pour la communication entre les applications (y compris ClusterControl) et la base de données. Les clients MariaDB ouvrent des connexions chiffrées aux serveurs de base de données et vérifient l'identité de ces serveurs avant de transférer des informations sensibles.
ClusterControl exécutera toutes les étapes nécessaires, y compris la création de certificats sur tous les nœuds de la base de données. Ces certificats peuvent être conservés ultérieurement dans l'onglet Gestion des clés.
Avec ClusterControl, vous pouvez également activer l'audit. Il utilise le plugin d'audit fourni par MariaDB. L'audit continu est une tâche impérative pour surveiller votre environnement de base de données. En auditant votre base de données, vous pouvez obtenir la responsabilité des actions entreprises ou du contenu consulté. De plus, l'audit peut inclure certains composants système critiques, tels que ceux associés aux données financières pour prendre en charge un ensemble précis de réglementations telles que SOX ou le règlement RGPD de l'UE. Le processus guidé vous permet de choisir ce qui doit être audité et comment conserver les fichiers journaux d'audit.
Surveillance et alerte
Lorsque vous travaillez avec des systèmes de bases de données, vous devez être en mesure de les surveiller. Cela vous permettra d'identifier les tendances, de planifier des mises à niveau ou des améliorations ou de réagir efficacement aux problèmes ou erreurs qui pourraient survenir.
ClusterControl :PrésentationLe nouveau ClusterControl utilise Prometheus comme magasin de données avec le langage de requête PromQL. La liste des tableaux de bord comprend les tableaux de bord Server General, Server Caches, InnoDB Metrics, Replication Master, Replication Slave, System Overview et Cluster Overview.
ClusterControl :tableau de bordClusterControl installe les agents Prometheus, configure les métriques et maintient l'accès à la configuration des exportateurs Prometheus via son interface graphique, afin que vous puissiez mieux gérer la configuration des paramètres comme les indicateurs de collecteur pour les exportateurs (Prometheus).
En tant qu'opérateur de base de données, nous devons être informés chaque fois que quelque chose de critique se produit dans notre base de données. Les trois principales méthodes de ClusterControl pour recevoir une alerte incluent :
- notifications par e-mail
- intégrations
- conseillers
Vous pouvez définir les notifications par e-mail au niveau de l'utilisateur. Accédez à Paramètres> Notifications par e-mail. Où vous pouvez choisir entre la criticité et le type d'alerte à envoyer.
La méthode suivante consiste à utiliser les services d'intégration. Il s'agit de transmettre la catégorie spécifique d'événements à l'autre service comme les tickets ServiceNow, Slack, PagerDuty, etc. afin que vous puissiez créer des méthodes de notification avancées et des intégrations au sein de votre organisation.
Le dernier consiste à impliquer une analyse de métriques sophistiquée dans la section Advisor, où vous pouvez créer des contrôles et des déclencheurs intelligents.
ClusterControl :ConseillersSurveillance SQL
La surveillance SQL est divisée en trois sections.
- Requêtes principales - présente les informations sur les requêtes qui consomment une part importante des ressources. Moniteur de requête :principales requêtes
- Exécuter des requêtes - il s'agit d'une liste de processus d'informations combinées à partir de tous les nœuds du cluster de base de données en une seule vue. Vous pouvez l'utiliser pour tuer les requêtes qui affectent vos opérations de base de données. Moniteur de requêtes :exécution de requêtes
- Valeurs aberrantes de la requête - présenter la liste des requêtes dont le temps d'exécution est supérieur à la moyenne. Moniteur de requête :valeurs aberrantes de requête
Sauvegarde et restauration
Maintenant que votre MariaDB est opérationnelle et que votre surveillance est en place, il est temps de passer à l'étape suivante :assurez-vous d'avoir une sauvegarde de vos données.
ClusterControl :référentiel de sauvegardeClusterControl fournit une interface pour la gestion des sauvegardes MariaDB avec prise en charge de la planification et des rapports créatifs. Il vous donne deux options pour les méthodes de sauvegarde.
- Sauvegarde logique (texte) :mysqldump
- Sauvegardes binaires :xtrabackup (versions inférieures), mariabackup
Une bonne stratégie de sauvegarde est un élément essentiel de tout système de gestion de base de données. ClusterControl offre de nombreuses options pour les sauvegardes et la récupération/restauration.
La conservation des sauvegardes ClusterControl est configurable; vous pouvez choisir de conserver votre sauvegarde pendant n'importe quelle période ou de ne jamais supprimer les sauvegardes. Le cryptage AES256 est utilisé pour sécuriser vos sauvegardes contre les éléments malveillants. Pour une récupération rapide, les sauvegardes peuvent être restaurées directement dans un nouveau cluster - ClusterControl gère le processus de restauration complet depuis le lancement d'une nouvelle configuration de base de données jusqu'à la récupération des données, en supprimant les étapes manuelles sujettes aux erreurs du processus.
Les sauvegardes peuvent être automatiquement vérifiées une fois terminées, puis téléchargées vers des services de stockage en nuage (AWS, Azure et Google). Différentes politiques de rétention peuvent être définies pour les sauvegardes locales dans le centre de données ainsi que pour les sauvegardes téléchargées dans le cloud.
Récupération automatique des nœuds et des clusters
ClusterControl fournit un support avancé pour la détection et la gestion des pannes. Il vous permet également de déployer différents proxys pour les intégrer à votre pile HA, il n'est donc pas nécessaire d'ajuster la chaîne de connexion de l'application ou l'entrée DNS pour rediriger l'application vers le nouveau nœud maître.
Lorsque le serveur maître est en panne, ClusterControl crée une tâche pour effectuer un basculement automatique. ClusterControl effectue tout le travail de fond pour élire un nouveau maître, déployer des serveurs esclaves de basculement et configurer des équilibreurs de charge.
Le basculement automatique de ClusterControl a été conçu selon les principes suivants :
- Assurez-vous que le maître est vraiment mort avant de basculer
- Basculement une seule fois
- Ne pas basculer vers un esclave incohérent
- N'écrire qu'au maître
- Ne récupère pas automatiquement le maître défaillant
Grâce aux algorithmes intégrés, le basculement peut souvent être effectué assez rapidement afin que vous puissiez garantir les SLA les plus élevés pour votre environnement de base de données.
ClusterControl :récupération automatiqueLe processus est hautement configurable. Il est livré avec plusieurs paramètres que vous pouvez utiliser pour adapter la récupération aux spécificités de votre environnement. Parmi les différentes options, vous pouvez trouver replication_stop_on_error, replication_auto_rebuild_slave, replication_failover_blacklist, replication_failover_whitelist, replication_skip_apply_missing_txs, replication_onfail_failover_script et bien d'autres.
Le basculement est le processus de passage à un composant de secours sain, lors d'une panne ou d'un événement de maintenance, afin de préserver la disponibilité. Plus vite cela peut être fait, plus vite vous pouvez être de retour en ligne. Si vous cherchez à minimiser les temps d'arrêt et à respecter vos SLA grâce à une approche automatisée pour TimescaleDB, alors ce blog est fait pour vous.
Équilibreur de charge MaxScale
En plus de MariaDB 10.3, ClusterControl ajoute une option d'équilibreur de charge MaxScale 2.3. MaxScale est un proxy compatible SQL qui peut être utilisé pour créer des environnements hautement disponibles. Il est livré avec de nombreuses fonctionnalités, cependant, l'objectif principal est de permettre l'équilibrage de charge et la haute disponibilité.
ClusterControl :MaxScaleMaxScale 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.
Sessions de base de données d'équilibrage de charge
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étecte la topologie, détermine quel MariaDB agit en tant que maître et lequel agit en tant qu'esclaves. Il achemine le trafic en conséquence.
Résumé
Nous espérons que ce blog vous aidera à vous familiariser avec les modules d'administration de ClusterControl et MariaDB 10.3. La meilleure option est de télécharger ClusterControl et de tester chacun d'eux.