"Maintenez votre base de données à jour vers la dernière version - c'est pour votre sécurité" est quelque chose que vous pouvez souvent entendre comme un conseil judicieux et une meilleure pratique en matière de gestion de base de données. D'autre part, la mise à niveau de votre base de données peut être une tâche fastidieuse. Même une mise à niveau de version mineure nécessite que vous testiez minutieusement la mise à niveau dans un environnement intermédiaire avant de mettre à niveau votre configuration de production. Alors, quel est le problème ? Si vous n'êtes en retard que sur une version mineure, cela ne devrait pas avoir d'importance, n'est-ce pas ? Eh bien, ce n'est peut-être pas le cas... jusqu'à ce que ce soit le cas. Et êtes-vous vraiment prêt à prendre ce genre de risque ?
Plus tôt cette année, une nouvelle vulnérabilité potentiellement dangereuse a été identifiée dans Galera Cluster (CVE-2021-27928). À première vue, nous voyons que la gravité était marquée comme élevée, et lorsque nous commençons à approfondir le problème, cela semble effectivement grave. Il semble qu'un utilisateur SUPER puisse exécuter n'importe quel code arbitraire en modifiant les variables wsrep_provider et wsrep_notify_cmd au moment de l'exécution. Il permet à l'utilisateur de charger la bibliothèque .so et de pointer vers un script que le serveur exécutera. Comme vous pouvez l'imaginer, ce n'est pas une bonne situation. Bien sûr, vous devez avoir accès à l'utilisateur SUPER, et vous auriez besoin d'avoir quelque chose de disponible à exécuter sur le nœud de la base de données, mais le fait que Galera puisse être configuré pour exécuter du code arbitraire en tant qu'utilisateur 'mysql' est déjà assez mauvais sur son propre.
Comme d'habitude, dans de tels cas, les correctifs ont été créés et de nouvelles versions du logiciel, non affectées par la vulnérabilité, ont été mises en place. Ce problème particulier a été corrigé dans MariaDB 10.5.9, 10.4.18, 10.3.28 et 10.2.37, ainsi que Percona XtraDB Cluster 5.6.51-28.46, Percona XtraDB Cluster 5.7.33-31.49 et Percona XtraDB Cluster 8.0.22-13.1. Tout semble être revenu à la normale. N'est-ce pas ?
Mauvais. Il existe d'innombrables systèmes fonctionnant en production qui n'ont pas encore été mis à niveau vers la nouvelle version non affectée. L'équipe de support de Manynines est en contact avec de nombreux environnements de bases de données dans la nature, et nous travaillons constamment avec des prospects pour les aider à migrer vers un environnement géré par ClusterControl. Nous voyons toutes sortes de MySQL (et pas seulement MySQL) fonctionner dans des versions obsolètes, parfois même des versions qui ont atteint leur fin de vie et ne reçoivent plus de mises à jour de sécurité. Cela ne devrait pas être le cas, surtout si vous êtes un utilisateur de ClusterControl.
ClusterControl est livré avec un ensemble de fonctionnalités qui vous aideront à rester à jour avec tous les correctifs de sécurité. Jetons un coup d'œil :
Tout d'abord, ClusterControl est livré avec des rapports opérationnels, l'un d'eux étant le rapport de mise à niveau du package :
Comme tous les rapports opérationnels de ClusterControl, le rapport de mise à niveau de package peut être programmé pour être exécuté régulièrement puis envoyé par e-mail. Il contiendra des informations sur les versions de package installées sur les nœuds et si des mises à niveau doivent être effectuées :
Le rapport de mise à niveau des packages présente une liste des packages qui doivent être mis à jour pour tous bases de données, équilibreurs de charge, correctifs de sécurité et tout autre package installé sur le nœud. Pour tous les packages système, la solution consiste à les mettre à niveau en utilisant des méthodes standard (apt, yum). En ce qui concerne les bases de données et les équilibreurs de charge, ClusterControl est livré avec une fonctionnalité qui vous permet d'effectuer la mise à niveau de la version mineure directement à partir de l'interface utilisateur.
Avant d'y aller, supposons que la base de données doit être mise à jour. Vous ne voulez pas simplement continuer et exécuter la mise à niveau à l'aveuglette - cela pourrait potentiellement causer des problèmes à votre application. Cela ne devrait pas - les versions mineures ne brisent pas la rétrocompatibilité (sauf lorsque vous utilisez MySQL 8.0 - alors oui, vous pouvez vous attendre à tout en passant de 8.0.x à 8.0.x + 1); cependant, il y a toujours un certain risque impliqué. Commencez par tester la mise à niveau dans un environnement séparé.
Nous avons un cluster MariaDB Galera simple avec ProxySQL et Keepalived :
Nous aimerions créer un cluster de test afin de pouvoir tester la mise à niveau processus. Avec ClusterControl, c'est aussi simple que d'utiliser la tâche Créer un cluster de réplicas :
Nous pouvons obtenir les nouvelles données du cluster existant ou utiliser les données d'une sauvegarde.
Nous devons également choisir un nœud source dans le cluster de production :
Ensuite, nous devons passer par un assistant de déploiement régulier, choisir la version et fournisseur de la base de données, définissant le mot de passe root, etc. Nous concluons en passant les nœuds sur lesquels le cluster sera installé.
En conséquence, vous verrez un nouveau cluster sur la liste avec un indique clairement qu'il se réplique hors du cluster de production. Une chose à mentionner, dans la configuration par défaut, ClusterControl utilisera les dernières versions des packages pour créer le cluster de répliques. Si vous souhaitez revérifier uniquement les requêtes, cela suffit. Si vous souhaitez suivre l'intégralité du processus de mise à niveau, vous devez identifier les anciennes versions des packages MySQL afin d'installer une ancienne version (puis les désépingler et tester la mise à niveau).
D'une manière ou d'une autre, après des tests réussis, vous souhaiterez éventuellement effectuer la mise à niveau. ClusterControl peut vous aider à accomplir ceci :
Dans Gérer -> Mises à niveau, vous trouverez une interface utilisateur pour effectuer la mise à niveau .
Vous pouvez utiliser "Vérifier les nouveaux packages" pour actualiser la base de données des paquets. Nous pouvons également choisir les nœuds que nous souhaitons mettre à niveau et les services :
Confirmez simplement et c'est tout - ClusterControl effectuera la mise à niveau et vous donnera le dernière version des packages.
Comme vous pouvez le constater, ClusterControl facilite et simplifie la mise à jour de vos bases de données. La seule étape que vous devez gérer manuellement est le test approprié. Sinon, tout le reste peut être effectué pour vous par ClusterControl. Vous souhaitez en savoir plus sur la façon dont ClusterControl peut vous aider à gérer efficacement votre base de données ? Essayez-le gratuitement pendant 30 jours.