Les mises à niveau sont toujours une tâche difficile et chronophage. Tout d'abord, vous devez tester votre application dans un environnement de test, donc, idéalement, vous devrez cloner votre environnement de production actuel pour cela. Ensuite, vous devez établir un plan pour effectuer la mise à niveau qui, selon l'entreprise, pourrait être sans temps d'arrêt (ou presque), ou même planifier une fenêtre de maintenance pour vous assurer qu'en cas de problème, cela affectera aussi peu que possible.
Si vous voulez faire toutes ces choses manuellement, il y a un gros risque d'erreur humaine et le processus sera lent. Dans ce blog, nous verrons comment automatiser les tests de mise à niveau de vos bases de données MySQL, MariaDB ou Percona Server à l'aide de ClusterControl.
Type de mises à jour
Il existe deux types de mises à niveau :les mises à niveau mineures et les mises à niveau majeures.
Mises à jour mineures
La première, la mise à niveau mineure, est la mise à niveau la plus courante et la plus sûre, et dans la plupart des cas, elle est effectuée sur place. Comme rien n'est sécurisé à 100 %, vous devez toujours avoir des sauvegardes et des nœuds esclaves de réplication, donc en cas de problème avec la mise à niveau et pour une raison quelconque, vous ne pouvez pas revenir en arrière/rétrograder, vous pouvez promouvoir un nœud esclave, et vos systèmes peuvent toujours travailler sans interruption.
Vous pouvez effectuer ce type de mise à niveau à l'aide de ClusterControl. Pour cela, allez dans ClusterControl -> Sélectionnez le cluster -> Gérer -> Mises à niveau.
Sur chaque nœud sélectionné, la procédure de mise à niveau :
-
Arrêter le nœud
-
Nœud de mise à niveau
-
Noeud de démarrage
Le nœud maître dans une topologie de réplication ne sera pas mis à niveau. Pour mettre à niveau le maître, un autre nœud doit d'abord être promu pour devenir le nouveau maître.
Améliorations majeures
Pour les mises à niveau majeures, la mise à niveau sur place n'est pas recommandée, car le risque de problème est trop élevé pour un environnement de production. Au lieu de cela, vous pouvez cloner votre cluster de base de données actuel et y tester votre application, et lorsque vous avez terminé, vous pouvez le recréer ou même créer un nouveau cluster dans la nouvelle version et basculer le trafic lorsqu'il est prêt. Il existe différentes approches pour ces mises à niveau. Vous pouvez mettre à niveau les nœuds un par un, ou créer un cluster différent répliquant le trafic de celui actuel, vous pouvez également utiliser des équilibreurs de charge pour améliorer la haute disponibilité, et plus d'options. La meilleure approche dépend de la tolérance aux temps d'arrêt et de l'objectif de temps de récupération (RTO).
Vous ne pouvez pas effectuer directement des mises à niveau majeures avec ClusterControl, car, comme nous l'avons mentionné, vous devez d'abord tout tester, pour vous assurer que la mise à niveau est sûre, mais vous pouvez utiliser différentes fonctionnalités de ClusterControl pour faire cette tâche plus facile. Voyons donc certaines de ces fonctionnalités.
Sauvegardes
Les sauvegardes sont indispensables avant toute mise à niveau. Une bonne politique de sauvegarde peut éviter de gros problèmes pour l'entreprise. Voyons donc comment ClusterControl peut automatiser cela.
Création d'une sauvegarde
Allez dans ClusterControl -> Sélectionnez le cluster -> Sauvegarde -> Créer une sauvegarde.
Vous pouvez créer une nouvelle sauvegarde ou en configurer une planifiée.
Vous pouvez choisir différentes méthodes de sauvegarde, selon la technologie de la base de données, et, dans la même section, vous pouvez choisir le serveur à partir duquel effectuer la sauvegarde, où vous souhaitez stocker la sauvegarde, et si vous souhaitez charger la sauvegarde dans le cloud (AWS, Azure ou Google Cloud) dans la même tâche.
Vous pouvez également compresser et chiffrer votre sauvegarde, et spécifier la période de conservation, entre autres options.
Dans la section de sauvegarde, vous pouvez voir la progression de la sauvegarde et des informations telles que la méthode, la taille, l'emplacement, etc.
Déploiement d'un environnement de test
Pour cela, vous n'avez pas besoin de tout créer à partir de zéro. Au lieu de cela, vous pouvez utiliser ClusterControl pour le faire de manière manuelle ou automatisée.
Restaurer la sauvegarde sur un hôte autonome
Dans la section Sauvegarde, vous pouvez choisir l'option "Restauration et vérification sur un hôte autonome" pour restaurer une sauvegarde dans un nœud séparé.
Ici, vous pouvez spécifier si vous souhaitez que ClusterControl installe le logiciel dans le nouveau nœud et désactive le pare-feu ou AppArmor/SELinux (selon le système d'exploitation). Pour cela, vous avez besoin d'un hôte dédié (ou VM) qui ne fait pas partie du cluster.
Vous pouvez garder le nœud opérationnel et en cours d'exécution, ou ClusterControl peut arrêter le service de base de données jusqu'à la prochaine tâche de restauration. Une fois terminé, vous verrez la sauvegarde restaurée/vérifiée dans la liste de sauvegarde marquée d'une coche.
Si vous ne souhaitez pas effectuer cette tâche manuellement, vous pouvez planifier ce processus à l'aide de la fonctionnalité de vérification de la sauvegarde, pour répéter cette tâche périodiquement dans une tâche de sauvegarde. Nous allons voir comment procéder dans la section suivante.
Vérification automatique de la sauvegarde ClusterControl
Pour automatiser cette tâche, accédez à ClusterControl -> Sélectionnez votre cluster -> Sauvegarde -> Créer une sauvegarde, et choisissez l'option Sauvegarde planifiée.
La fonction de vérification automatique de la sauvegarde n'est disponible que pour les sauvegardes planifiées, et le processus est le même que celui décrit dans une section précédente. Dans la deuxième étape, assurez-vous d'avoir activé l'option Vérifier la sauvegarde et remplissez les informations requises.
Lorsque le travail est terminé, vous pouvez voir l'icône de vérification dans la section ClusterControl Backup, la même que vous aurez en effectuant la vérification de manière manuelle, à la différence que vous n'avez pas besoin s'inquiéter de la tâche de restauration. ClusterControl restaurera automatiquement la sauvegarde à chaque fois et vous pourrez tester votre application avec les données les plus récentes.
Récupération automatique et basculement
Avec la fonction de récupération automatique activée, en cas d'échec, ClusterControl promouvra le nœud esclave le plus avancé en maître et vous informera du problème. Il bascule également sur le reste des nœuds esclaves pour répliquer à partir du nouveau serveur maître.
S'il y a des équilibreurs de charge dans la topologie, ClusterControl les reconfigurera pour appliquer les changements de topologie.
Vous pouvez également exécuter un basculement manuellement si nécessaire. Allez dans ClusterControl -> Sélectionnez le cluster -> Nœuds -> Sélectionnez le nœud à promouvoir -> Actions du nœud -> Promouvoir l'esclave.
De cette façon, si quelque chose ne va pas pendant la mise à niveau, vous pouvez utiliser ClusterControl pour le réparer dès que possible.
Automatiser les choses avec ClusterControl CLI
ClusterControl CLI, également connu sous le nom de s9s, est un outil de ligne de commande introduit dans ClusterControl version 1.4.1 pour interagir, contrôler et gérer les clusters de bases de données à l'aide du système ClusterControl. ClusterControl CLI ouvre une porte pour l'automatisation des clusters où vous pouvez facilement l'intégrer aux outils d'automatisation de déploiement existants comme Ansible, Puppet, Chef, etc. Voyons maintenant quelques exemples de cet outil.
Mettre à jour
$ s9s cluster --cluster-id=19 \
--check-pkg-upgrades \
--log
$ s9s cluster --cluster-id=19 \
--available-upgrades \
--nodes='10.10.10.146' \
--log \
--print-json
$ s9s cluster --cluster-id=19 \
--upgrade-cluster \
--nodes='10.10.10.146' \
--log
Créer une sauvegarde
$ s9s backup --create \
--backup-method=mysqldump \
--cluster-id=2 \
--nodes=10.10.10.146:3306 \
--on-controller \
--backup-directory=/storage/backups
--log
Restaurer la sauvegarde
$ s9s backup --restore \
--cluster-id=19 \
--backup-id=3 \
--wait
Vérifier les sauvegardes
$ s9s backup --verify \
--backup-id=3 \
--test-server=10.10.10.151 \
--cluster-id=19 \
--log
Promouvoir le nœud esclave
$ s9s cluster --promote-slave \
--cluster-id=19 \
--nodes='10.10.10.146' \
--log
Conclusion
Les mises à niveau sont des tâches nécessaires mais chronophages. Déployer un environnement de test à chaque fois que vous avez besoin d'une mise à niveau peut être un cauchemar, et il est difficile de maintenir cet environnement à jour sans aucun outil d'automatisation.
ClusterControl vous permet d'effectuer des mises à niveau mineures ou même de déployer l'environnement de test pour rendre la tâche de mise à niveau plus facile et plus sûre. Vous pouvez également l'intégrer à différents outils d'automatisation tels qu'Ansible, Puppet, etc.