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

Automatiser la vérification de l'état de la base de données

S'assurer que la base de données est saine est l'une des choses critiques et importantes qu'un administrateur de base de données doit faire. Si nous négligeons la maintenance de la base de données, il y a une probabilité plus élevée que nous rencontrions un problème; par exemple, un problème de performances de base de données causé par une charge de travail qui a changé au fil du temps, ou une mauvaise configuration qui entraîne une violation de données.

Une vérification régulière de la configuration, de l'utilisation des ressources, des procédures de sauvegarde et de restauration, de la sécurité des données et des performances des requêtes peut aider à éviter les problèmes de base de données. Nous avons besoin d'une vérification de base de données standard pour notre environnement de base de données, afin que nous puissions vérifier si la base de données est toujours sous contrôle.

Qu'est-ce qu'une vérification de l'état de la base de données

Une vérification de l'état de la base de données consiste en un certain nombre de tâches pour vérifier l'état de notre base de données. Pourquoi devons-nous effectuer un bilan de santé ? Nous devons identifier et résoudre tout problème ou anomalie dans notre environnement de base de données, qu'il s'agisse d'un problème de performances, d'un problème de configuration ou d'un problème susceptible de provoquer une panne.

Nous pouvons diviser le bilan de santé en quelques catégories :

  • Contrôle de sécurité, pour verrouiller l'accès à la base de données et s'assurer que le trafic provient d'un réseau de confiance avec le droit privilèges.

  • Vérification de la configuration, pour s'assurer que la configuration répond aux critères standards qui ont été définis par l'organisation.

  • Vérification des performances, pour s'assurer que la base de données utilise les ressources matérielles et répond aux applications.

  • Procédures de sauvegarde et de restauration, pour garantir que la sauvegarde que nous avons prise de la base de données peut être restaurée.

À partir de ces catégories, nous pouvons faire une ventilation de ce que nous devons vérifier dans la base de données. Ceci est très important, afin que nous puissions avoir une vérification détaillée de chaque aspect. Par exemple :

  • Sécurité de la base de données

  • Comparez l'utilisateur et les privilèges sur la base de données avec l'accès à la matrice d'utilisateurs dont nous disposons

  • Vérifier l'adresse IP de la liste blanche dans la base de données, si le trafic provient d'un réseau de confiance

  • Assurez-vous que la journalisation d'audit de la base de données est activée

  • Vérification de la configuration

  • Vérifier le SSL déjà en place

  • Assurez-vous que la configuration de la base de données est correcte (autorisation et propriété)

  • Vérification des performances

  • Vérifier le taux d'accès au cache de la base de données

  • Assurez-vous que la connexion à la base de données est encore suffisante pour gérer le trafic

  • Procédure de sauvegarde et de restauration

  • Planification de sauvegarde appropriée, qui fournit le RPO convenu

  • Assurez-vous que nous testons les sauvegardes afin que nous sachions que les données sont restaurables

Sur la base de la liste ci-dessus, nous pouvons créer un script pour vérifier ces éléments sur chaque type de base de données (par exemple, MySQL, PostgreSQL, MongoDB). Chaque type de base de données aura évidemment des commandes différentes.

Automatisation des vérifications de l'état de la base de données

Nous ne souhaitons pas exécuter une tâche répétitive sur une base hebdomadaire ou mensuelle, la vérification de l'état de la base de données est une tâche chronophage. Nous exécutons le script sur chaque nœud de la base de données, donc l'automatisation des vérifications de l'état nous fait gagner du temps.

Sur la base de la liste des scripts de vérification de l'état, nous pouvons créer un script bash pour exécuter les tâches et le planifier avec cron. Vous trouverez ci-dessous un exemple d'un simple rapport de vérification de l'état de la base de données :

#!/bin/sh
# Simple database check report
username = "audit_user"
password = "pwd001"
hostname = "db01-payment"
mycnf = "/etc/mysql/my.cnf"
dt=$(date '+%d/%m/%Y %H:%M:%S');
audit_name = "MySQL_Healthcheck_audit_report_"$dt

# check the queries
/bin/mysql -h $hostname -u $username  -p $password --skip-column-names -B -e "SHOW STATUS LIKE 'Queries'" > $audit_name

# check open table cache hit ratio
/bin/mysql -h $hostname -u $username  -p $password --skip-column-names -B -e "SHOW STATUS LIKE 'Table_open_cache_hits'" >> $audit_name

# check the ssl session mode
/bin/mysql -h $hostname -u $username  -p $password --skip-column-names -B -e "SHOW STATUS LIKE 'Ssl_session_cache_mode'" >> $audit_name

# check the buffer pool size
cat $mycnf | grep "innodb_buffer_pool_size" >> $audit_name

#check ssl key in my.cnf
cat $mycnf | grep "ssl_key" >> $audit_name

# check permission of my.conf
ls -ltr $mycnf >> $audit_name

Les vérifications de l'état peuvent également être automatisées par des outils de gestion de configuration tels qu'Ansible, Salt, Chef ou Puppet.

Automatisation des vérifications de l'état de la base de données avec ClusterControl

ClusterControl est une plate-forme d'exploitation pour les bases de données, elle affiche les problèmes de santé, de performances ou de disponibilité des serveurs dans leur environnement de base de données, le tout à partir d'une console centrale. Il prend en charge l'automatisation des vérifications de l'état de la base de données via des rapports opérationnels. Vous pouvez générer ou planifier les rapports opérationnels, ainsi que les rapports d'incidents. Il existe plusieurs types de rapport, comme indiqué ci-dessous :

Le rapport système quotidien vous donne un aperçu de votre cluster de base de données actuel avec se compose de diverses informations telles que l'état du service du nœud, l'état de la sauvegarde, la disponibilité des nœuds, le résumé des principales requêtes.

Package Upgrade Report vous donne un résumé des packages disponibles pour la mise à niveau depuis le gestionnaire de référentiel.

Le rapport sur les modifications de schéma compare les modifications de la base de données dans une structure de table qui se sont produites entre deux rapports générés différents.

Les rapports de sauvegarde vous donnent des informations sur le résumé et les détails de la sauvegarde, par exemple, la dernière sauvegarde créée, l'état de la sauvegarde, l'état de vérification de la sauvegarde et la période de conservation de la sauvegarde.

Outre les rapports opérationnels, il existe également des conseillers qui vous donnent un aperçu du processeur, du disque, des connexions à la base de données, etc., comme ci-dessous :

Les notifications par e-mail et les alertes via des canaux tiers configurés donnent un aperçu des problèmes (par exemple, échec des sauvegardes, sauvegardes irrécupérables, défaillances des nœuds).

Schema Analyzer fournit des informations sur les index en double/redondants, les tables sans clés primaires et les tables utilisant le moteur de stockage MyISAM. Les index redondants peuvent être particulièrement intéressants à connaître, car ils gonflent la taille de la base de données (et des sauvegardes) et peuvent ralentir les mises à jour sur la table.