Les utilisateurs de bases de données open source doivent souvent utiliser un mélange d'outils et de scripts maison pour gérer leurs environnements de base de données de production. Cependant, même en ayant ses propres scripts maison dans la solution, il est difficile de la maintenir et de suivre les nouvelles fonctionnalités de la base de données, les exigences de sécurité ou les mises à niveau. Avec les nouvelles versions majeures d'une base de données, y compris MySQL 8.0, cette tâche peut devenir encore plus difficile.
Au cœur de ClusterControl se trouve sa fonctionnalité d'automatisation 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 bases de données, l'ajout et la mise à l'échelle de nouveaux nœuds, la gestion des sauvegardes, la haute disponibilité et le basculement, les changements de topologie, les mises à niveau, etc. Les procédures automatisées sont précises, cohérentes et reproductibles afin que vous puissiez minimiser le risque de modifications sur les environnements de production.
De plus, avec ClusterControl, les utilisateurs de MySQL ne sont plus soumis au verrouillage du fournisseur ; quelque chose qui a été remis en question par beaucoup récemment. Vous pouvez déployer et importer gratuitement une variété de versions et de fournisseurs de MySQL à partir d'une seule console.
Dans cet article, nous allons vous montrer comment déployer MySQL 8.0 avec une configuration testée au combat et la gérer de manière automatisée. Vous trouverez ici comment faire :
- Installation de ClusterControl
- Processus de déploiement MySQL
- Déployer un nouveau cluster
- Importer un cluster existant
- Mise à l'échelle de MySQL
- Sécuriser MySQL
- Surveillance et tendances
- Sauvegarde et restauration
- Récupération automatique des nœuds et des clusters (basculement automatique)
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. La machine virtuelle de base peut démarrer à partir de 2 Go, 2 cœurs et un espace disque de 20 Go d'espace de stockage, sur site ou dans le cloud.
L'installation est bien décrite dans la documentation mais en gros, vous téléchargez un script d'installation qui vous guide à travers les étapes. Le script de l'assistant configure la base de données interne, installe les packages, les référentiels et les autres ajustements nécessaires. Pour les environnements sans accès Internet, vous pouvez utiliser le processus d'installation hors ligne.
ClusterControl nécessite un accès SSH aux hôtes de la base de données et la surveillance peut être basée sur un agent ou sans agent. La gestion est sans agent.
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
Déploiement et mise à l'échelle
Déployer MySQL 8.0
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 nouvelle version 1.7.2 introduit la prise en charge de la version 8.0 d'Oracle Community Edition et de Percona Server. Au moment de la rédaction de ce blog, les versions actuelles sont Oracle MySQL Server 8.0.15 et Percona Server for MySQL 8.0-15. Sélectionnez l'option "Déployer le cluster de bases de données ” et suivez les instructions qui s'affichent.
ClusterControl :Déployer le cluster de bases de donnéesLors du choix de MySQL, nous devons spécifier l'utilisateur, la clé ou le mot de passe et le port pour se connecter par SSH à nos serveurs. Nous avons également besoin d'un nom pour notre nouveau cluster et si nous voulons que ClusterControl installe le logiciel et les configurations correspondants pour nous.
Après avoir configuré les informations d'accès SSH, nous devons entrer les données pour accéder à notre base de données. Nous pouvons également spécifier quel référentiel utiliser. La configuration du référentiel est un aspect important pour les serveurs de base de données et les clusters. 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 :
- Utiliser 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
Provisionnez les logiciels en utilisant le référentiel de logiciels préexistant déjà configuré sur les nœuds. L'utilisateur doit configurer manuellement le référentiel de logiciels sur chaque nœud de base de données et ClusterControl utilisera ce référentiel pour le déploiement. C'est bien si les nœuds de la base de données fonctionnent sans connexion Internet. - Utiliser des référentiels en miroir (Créer un nouveau référentiel)
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 local en miroir. Cela vous permet de "geler" les versions actuelles des packages logiciels.
Dans l'étape suivante, nous devons ajouter nos serveurs au cluster que nous allons créer. Lors de l'ajout de nos serveurs, nous pouvons entrer l'adresse IP ou le nom d'hôte, puis choisir l'interface réseau. Pour ce dernier, nous devons disposer d'un serveur DNS ou avoir ajouté nos serveurs MySQL au fichier de résolution local (/etc/hosts) de notre ClusterControl, afin qu'il puisse résoudre le nom correspondant que vous souhaitez ajouter.
Sur l'écran, nous pouvons voir un exemple de déploiement avec un serveur maître et deux serveurs esclaves. La liste des serveurs est dynamique et vous permet de créer des topologies sophistiquées qui peuvent être étendues après l'installation initiale.
ClusterControl :Définir la topologieLorsque tout est réglé, appuyez sur le bouton de déploiement. Vous pouvez surveiller l'état de la création de notre nouvelle configuration de réplication à partir du moniteur d'activité de ClusterControl. Le processus de déploiement prendra également en charge l'installation des outils mysql populaires tels que percona toolkit et percona-xtradb-backup.
ClusterControl :Déployer les détails du clusterUne fois la tâche terminée, nous pouvons voir notre cluster dans l'écran principal de ClusterControl et dans la vue topologique. Notez que nous avons également ajouté un équilibreur de charge (ProxySQL) devant les instances de base de données.
ClusterControl :TopologieComme nous pouvons le voir sur l'image, une fois notre cluster créé, nous pouvons effectuer plusieurs tâches dessus, directement depuis la section topologie.
ClusterControl :gestion de la topologieImporter 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.
ClusterControl :Importer un cluster existantTout d'abord, nous devons entrer les informations d'identification d'accès SSH à nos serveurs. 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 des nœuds ou des clusters.
Mettre à l'échelle MySQL
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.
Lors de l'ajout d'un nouveau nœud à la configuration, vous avez la possibilité d'utiliser la sauvegarde existante afin qu'il ne soit pas nécessaire de submerger le nœud maître de production avec du travail supplémentaire.
ClusterControl Scaling MySQLGrâce à la prise en charge intégrée des équilibreurs de charge (ProxySQL, Maxscale, HAProxy), vous pouvez ajouter et supprimer dynamiquement des nœuds MySQL. Si vous souhaitez en savoir plus sur la meilleure façon de gérer la réplication MySQL et le clustering, veuillez lire le livre blanc sur la réplication MySQL pour la réplication HA.
Sécuriser MySQL
MySQL est livré avec très peu de sécurité par défaut. Cela a été amélioré avec la version récente, mais les systèmes de qualité de production nécessitent toujours des ajustements dans la configuration my.cnf par défaut.
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 active la prise en charge SSL pour les connexions MySQL. 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 MySQL 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.
ClusterControl :Gestionnaire de clés SSLLes installations de serveur Percona sont fournies avec un support supplémentaire pour un plug-in d'audit. 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.
ClusterControl :Activer le journal d'audit pour Percona Server 8.0Surveillance
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.
Le nouveau ClusterControl 1.7.2 est livré avec une surveillance haute résolution mise à jour pour MySQL 8.0. Il utilise Prometheus comme magasin de données avec le langage de requête PromQL. La liste des tableaux de bord comprend MySQL Server General, MySQL Server Caches, MySQL InnoDB Metrics, MySQL Replication Master, MySQL Replication Slave, System Overview et Cluster Overview Dashboards.
ClusterControl 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). Nous avons décrit en détail ce qui peut être surveillé récemment dans l'article Comment surveiller MySQL avec Prometheus &ClusterControl.
ClusterControl :Tableau de bordAlerte
En tant qu'opérateur de base de données, nous devons être informés chaque fois que quelque chose de critique se produit sur 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.
ClusterControl :notificationLa 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.
ClusterControl :IntégrationLe 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 :conseillers automatiquesSauvegarde et restauration
Maintenant que votre MySQL est opérationnel 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 :Créer une sauvegardeClusterControl fournit une interface pour la gestion des sauvegardes MySQL avec prise en charge de la planification et des rapports créatifs. Il vous donne deux options pour les méthodes de sauvegarde.
- Logique :mysqldump
- Binaire :xtrabackup/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.
ClusterControl :planification de sauvegarde et référentiel de sauvegardeLa 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, du lancement d'une nouvelle configuration de base de données à 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, de sorte qu'il n'est 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 les équilibreurs de charge.
ClusterControl :récupération automatique des nœudsLe 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.
Le 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.