MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment démarrer avec l'automatisation de la base de données

L'automatisation des bases de données permet de simplifier et d'accélérer les tâches complexes et chronophages. Les tâches les plus couramment et facilement identifiées pour l'automatisation sont celles qui prennent du temps mais qui sont répétitives. Celles-ci consomment souvent de la productivité et peuvent affecter les finances de l'entreprise car vous devez payer les personnes qui travaillent sur ces tâches. Cependant, les processus dans lesquels du temps et des efforts sont inutilement consommés peuvent être convertis en automatisation virtuelle, évitant ainsi un travail souvent ennuyeux et épuisant.

L'automatisation des bases de données est une pratique courante des administrateurs de bases de données et des administrateurs de serveurs, qui, ensemble, sont plus communément appelés DevOps. DevOps fait également référence à la combinaison des tâches d'administrateur de base de données et de serveur. À l'ancienne, les tâches automatisées traditionnelles et courantes sont écrites sous la forme d'une série d'instructions SQL ou de fichiers .sql, qui déploient et provisionnent des serveurs via des scripts, configurent le chiffrement/déchiffrement ou exploitent la sécurité de l'environnement dans lequel votre automatisation est supposée. courir. Ici, l'automatisation n'est pas un exemple d'une entreprise qui remplace des personnes par des scripts. Il est là en tant qu'assistant pour accélérer les choses et terminer les tâches plus rapidement avec moins d'erreurs. L'automatisation ne peut pas remplacer la façon dont les administrateurs de base de données exécutent leurs tâches ni la valeur qu'ils peuvent apporter à l'ensemble de l'entreprise ou de l'organisation.

Des outils sophistiqués pour l'infrastructure en tant que code (IaC) tels que Puppet, Chef, Ansible, SaltStack et Terraform aident les DBA à effectuer les tâches facilement réplicables, telles que la sauvegarde et la restauration, le basculement, le déploiement de nouveaux clusters, réglage des paramètres de sécurité, réglage des performances du noyau du système d'exploitation et de la base de données, et bien plus encore. Avec l'aide de l'automatisation, de nombreux administrateurs de base de données ont également amélioré ou déplacé leurs compétences en se concentrant sur des tâches spécifiques au domaine des données pour couvrir également la façon de coder afin d'utiliser ces outils IaC qui facilitent les choses par rapport à l'approche traditionnelle. Il existe également à l'heure actuelle des outils qui facilitent la gestion de vos actifs dans le cloud, tels que la gestion des comptes d'utilisateurs de votre entreprise, les journaux, le déploiement d'instances ou la gestion de vos serveurs. Les outils pour le cloud des trois grands fournisseurs de cloud incluent AWS CloudFormation, Azure Resource Manager et Google Cloud Deployment Manager et permettent aux DBA ou DevOps de tirer parti de la puissance de l'automatisation et d'accélérer les choses. Cela impressionne non seulement les dirigeants de votre organisation ou de votre entreprise, mais également les clients qui comptent sur votre service.

Qu'est-ce qui doit être automatisé ?

Comme mentionné ci-dessus, l'automatisation des bases de données n'est pas nouvelle pour les DBA, les administrateurs de serveur ou même DevOps. Il n'y a aucune raison d'hésiter ou de se demander s'il faut automatiser. Comme indiqué précédemment, les cas courants facilement identifiables pour l'automatisation sont des tâches de nature répétitive.

Ci-dessous, nous énumérons les choses qui sont axiomatiques du point de vue du DBA.

  • Provisionnement de vos serveurs (par exemple, lancer des instances de VM telles que l'utilisation de vagrant, lancer docker ou lancer votre Kubernetes plate-forme) et configurez l'accès SSH ou configurez l'accès VPN

  • Déploiement d'un nouveau cluster de base de données

    • Identifier le type de fournisseur de base de données, le type de configuration (primaire/de secours, réplication maître-maître, synchrone réplication)

  • Importer un cluster de base de données existant

  • Déployer/importer des bases de données existantes dans votre cluster de bases de données actuel

  • Basculement ou basculement automatique

  • Récupération automatique de nœud ou de cluster

  • Promotion de réplique/esclave ou rétrogradation d'un maître

  • Déploiement d'équilibreurs de charge (par exemple ProxySQL, HaProxy, pgpool, pgbouncer, MaxScale, Keepalived)

  • Sauvegarde et restauration

  • Configurer votre environnement de surveillance de base de données (par exemple, déployer une surveillance basée sur un agent comme Prometheus)

  • Activer les ajustements de sécurité

  • Effectuer des optimisations et des réglages automatiques en fonction du type d'environnement

  • Activer les systèmes d'alerte vers d'autres intégrations tierces

  • Générer des alertes ou des alarmes et des notifications

  • Générer des rapports tels que des graphiques

  • Traiter les journaux de requêtes (journaux lents) pour l'analyse des requêtes

  • Générer une analyse de requête

  • Archivage ou nettoyage de la base de données

Il y a bien sûr beaucoup de cas que vous pourriez automatiser, mais ceci répertorie les tâches les plus courantes et leur automatisation est incontestable. Ce sont les types de tâches qui sont de nature répétitive et la majorité sont sujettes aux erreurs, en particulier lorsqu'elles doivent être effectuées rapidement en raison de contraintes de temps.

Quelles sont les choses qui ne devraient pas être automatisées ?

Ces zones sont celles où vos DBA ou SysAdmins effectuent la majeure partie du travail. L'automatisation ne peut pas remplacer les compétences et l'intelligence du DBA lorsqu'il s'agit de choses qui ne peuvent pas être automatisées.

Il est entendu qu'un administrateur de bases de données doit être qualifié, avec une compréhension approfondie :  de la base de données qu'il utilise et des bases de données qui seront déployées ; les données qui sont traitées et stockées ; et si la façon dont elles sont traitées est sécurisée ou si elle est conforme aux normes de sécurité de l'entreprise. Les administrateurs de base de données examinent également et sont principalement considérés comme des DevOps, ainsi que comme architecte de l'automatisation. Ils dictent ce qui doit être fait et ce qui ne sera pas fait. Les éléments courants qui ne doivent pas être automatisés sont les suivants :

 

  • Configuration de vos sauvegardes planifiées. Les sauvegardes planifiées sont bien sûr automatisées et doivent s'exécuter en conséquence, mais les dates planifiées ou la période de temps requise doivent être basées sur les heures de faible pic que le serveur effectuera. Par exemple, vous ne pouvez pas effectuer de sauvegarde si le cluster est occupé pendant la journée. Il existe également des cas courants où les serveurs sont encore occupés la nuit en fonction du type d'application que vous servez et de son emplacement géographique.

  • Le basculement automatique n'a pas réussi à promouvoir un nouveau maître. C'est l'un des cas les plus importants et doit être bien compris. Si vous avez des scripts automatisés conçus pour le basculement, ils ne doivent pas être conçus pour poursuivre de force un basculement en cas d'échec. Vous ne saurez peut-être jamais quel est le problème principal, et en cas d'échec, il peut y avoir des transactions qui à récupérer avant que quoi que ce soit d'autre ne soit fait. Par exemple, il peut s'agir d'une transaction financière stockée sur le maître défaillant, et vous avez voulu promouvoir un esclave de force, mais l'esclave candidat n'a pas réussi à répliquer la dernière transaction. Dans ce cas, vous pourriez vous retrouver avec des données corrompues.

  • Récupération de données. Bien sûr, lorsque vous rencontrez des données corrompues ou qu'un cluster ne parvient pas à récupérer de votre récupération automatique de nœud/serveur, vous devrez peut-être rechercher la cause principale. Vous devez documenter cela pour votre RCA (Root Cause Analysis) pour l'éviter à l'avenir. Cependant, il existe des cas où l'échec est un bogue du logiciel de base de données que vous utilisez, ou il peut s'agir d'une corruption de la machine virtuelle.

  • Dérive des données ou incohérence des données. Ce n'est certainement pas une situation idéale pour l'automatisation. Vous ne voulez pas que votre automate généralise ou stéréotype vos données à une pratique qui appliquerait ce concept :« si des données sont corrompues, réparons-les automatiquement ». Ce n'est certainement pas une bonne pratique. Il y a beaucoup de cas qui doivent d'abord être compris et étudiés avant de pouvoir décider. Dans MySQL, par exemple, il existe un outil Percona appelé pt-table-checksum, puis pt-table-sync pour lequel les deux sont corrélatifs l'un à l'autre pour corriger les incohérences de données. Vous ne voudrez certainement pas automatiser cela, sauf si vous connaissez très bien vos données, ou si vos données ne sont pas exhaustives, ou si les données peuvent être régénérées.

  • Optimisation du noyau et optimisation de la base de données. Bien sûr, cela peut être considéré comme contradictoire avec ce que nous avons dit ci-dessus. Cependant, il existe des variables auto-réglables connues pour des types d'environnements spécifiques, tels que la mémoire, le pool de mémoire tampon, les HugePages ou les paramètres de mémoire virtuelle. Cependant, de nombreux paramètres doivent être compris, étudiés, testés et comparés avant de décider d'appliquer ou non les modifications.

Certainement, il y a beaucoup de choses que vous ne devriez pas automatiser et que nous n'avons pas mentionnées. Dans le monde des bases de données, il existe un grand nombre de situations qui dépendent du type de données et d'application que vous servez. Gardez cela à l'esprit et soyez attentif aux éléments qui peuvent être automatisés. Sinon, l'automatisation peut conduire à la destruction.

Outils d'automatisation

C'est ici que vous pouvez commencer avec vos scripts d'automatisation. Le composant le plus important de l'automatisation est la vitesse ! En ce qui concerne la vitesse, elle n'est pas mesurée par la rapidité avec laquelle un outil est capable de terminer les tâches, mais par le degré de confort des développeurs ou des responsables des scripts ou de l'IaC avec l'outil. Il y a certainement des avantages et des inconvénients pour ces outils d'automatisation disponibles. Ce qui est plus important, c'est de déterminer les spécifications de ces outils d'automatisation, car il y a plus à offrir en plus de l'automatisation. Plus généralement, ils fournissent des mécanismes de gestion de la configuration et de déploiement.

L'automatisation est une question de vitesse, c'est-à-dire sa rapidité par rapport à l'utilisation d'une approche traditionnelle ou à l'utilisation de vos propres scripts de langue préférés. Bien sûr, l'utilisation de vos propres scripts peut être parfaite, mais si votre organisation ou votre entreprise est axée sur le progrès technologique, l'utilisation d'outils tiers tels que Ansible, Puppet, Chef, SaltStack ou Terraform est plus idéale. Pourquoi est-ce plus idéal ? Ces outils tiers sont conçus pour vaincre les tâches longues et longues à effectuer et peuvent être effectués avec quelques lignes de code.

Par exemple, Terraform est connu pour ses avantages en termes de portabilité. Imaginez, avec Terraform, vous disposez d'un seul outil et d'un seul langage pour décrire l'infrastructure pour Google Cloud, AWS, OpenStack et TOUT autre cloud. Si vous passez à un autre fournisseur, vous n'avez pas besoin de modifier ou de refaire vos scripts. Il vous permet également d'avoir un déploiement complet, et cela inclut la gestion de vos conteneurs Kubernetes. Imaginez qu'à partir d'un seul outil, vous puissiez faire beaucoup de choses.

Lorsque vous démarrez l'automatisation de votre base de données, ne partez pas de zéro car le but de l'automatisation est la rapidité ! Encore une fois, la vitesse ne se mesure pas ici à la vitesse à laquelle il faut terminer le travail, mais à sa vitesse par rapport à une approche traditionnelle ou à des tâches manuelles. Bien sûr, la vitesse à laquelle il est capable de terminer le travail dépend de tout ; par exemple, une partie de vos scripts peut entraîner de longs retards en raison d'un grand nombre de données traitées et de longues exécutions de travail.

Choisissez toujours en fonction de vos besoins

Lorsque vous choisissez des outils, ne vous fiez pas au battage médiatique ou à ce qui est le plus populaire dont vous ayez entendu parler. Bien que les outils grand public mentionnés précédemment soient largement adoptés par la communauté, ils introduisent également de la complexité. Par exemple, lorsque vous utilisez Ansible, vous devez être familiarisé avec YAML, tandis qu'avec Puppet ou Chef, vous devez être familiarisé avec Ruby et son langage sous-jacent spécifique au domaine.

Profitez des outils d'entreprise disponibles

Il existe de nombreux outils d'automatisation de base de données prometteurs pour démarrer. Si vous pensez qu'il est inconfortable et long d'embaucher des DBA, des administrateurs système ou des DevOps pour étendre votre équipe, il existe des outils disponibles qui offrent une aide en matière de gestion de base de données, de gestion des sauvegardes et d'observabilité.

Plusieurs neufs ClusterControl pour l'automatisation de la base de données

ClusterControl propose de nombreuses tâches automatisées qui éliminent le besoin d'approches manuelles. ClusterControl est conçu pour faciliter les opérations de base de données pour les organisations, les entreprises, les administrateurs de base de données, les administrateurs système, les DevOps et même les développeurs. Son objectif est d'automatiser les tâches longues et répétitives. Le grand avantage de ClusterControl est qu'il s'agit d'un outil de gestion de base de données mature et qu'il possède des fonctionnalités étendues très puissantes pour gérer vos serveurs de base de données. Il applique également les meilleures pratiques les plus récentes et conformes aux normes de l'industrie pour la gestion de vos bases de données. Nous écoutons les demandes de nos clients, puis nous mettons en œuvre des capacités pour y répondre.

Certaines des fonctionnalités d'automatisation de ClusterControl les plus riches en fonctionnalités dont vous pouvez tirer parti sont :

  • Déploiement de vos serveurs de base de données. Choisissez le fournisseur, spécifiez la bonne version, déterminez le type de cluster, spécifiez le nom d'hôte/IP du serveur tel que le nom d'utilisateur, le mot de passe, etc.

  • Importation de serveurs existants vers ClusterControl

  • Déploiement dans le cloud

  • Surveillance et création de rapports sur l'état de la base de données

  • Alertes et notifications

  • Sauvegarde et restauration

  • Vérification de sauvegarde

  • Basculement automatique, basculement

  • Configuration haute disponibilité

  • Promouvoir un esclave ou rétrograder un maître

  • Ajouter une réplique nouvelle/existante à votre cluster

  • Étendre un autre cluster en tant qu'esclave d'un autre cluster (parfait pour une configuration géographique pour votre reprise après sinistre)

  • Récupération de nœud et de cluster

  • Intégration LDAP

  • Notifications d'alertes tierces

  • Déploiement de l'un des nombreux équilibreurs de charge (pgbouncer, ProxySQL, MaxScale, HAProxy, Keepalived, garbd )

  • Déploiement de la surveillance basée sur les agents à l'aide des exportateurs Prometheus

  • Analyse des requêtes

  • Ajustements de sécurité

  • Réglage automatique des paramètres du noyau et de la base de données du système d'exploitation

En plus de tout cela, ClusterControl dispose également de conseillers intégrés qui permettent aux administrateurs de base de données ou DevOps de créer leurs propres scripts et de les intégrer aux conseillers de performance de ClusterControl.

Résumé

L'automatisation des bases de données aide à accélérer les tâches complexes mais répétitives. Il aide les DBA à avancer rapidement sur différentes tâches et à améliorer leurs compétences en fonction de l'étendue du travail impliqué. L'automatisation de la base de données permet aux DBA d'être plus innovants tout en gérant confortablement la base de données. L'automatisation de la base de données ne remplace pas le rôle du DBA. Il y aura toujours un besoin de personnes compétentes et intelligentes pour gérer vos bases de données, surtout en cas de catastrophe. Faites toujours confiance aux outils recommandés par vos DBA, tout en faisant confiance à leurs compétences pour gérer la santé et la durée de vie de vos bases de données.