Surveillance de l'état

Health Monitor collecte les statistiques relatives à l'utilisation de l'UC du système, à l'utilisation du disque, à l'utilisation de la mémoire et au processus serveur MySQL (mysqld). Les statistiques sont consignées dans des tables d'historique, pour lesquelles Health Monitor prélève des échantillons une fois par minute et conserve une journée de données. Vous pouvez également accéder à ces statistiques dans des tables alimentées par les relevés en cours à la demande lorsque vous les interrogez.

Présentation de Health Monitor

Health Monitor échantillonne les informations d'espace disque, les informations de mémoire système et les informations de mémoire de traitement toutes les soixante secondes, et stocke une journée de données dans des tables du schéma de performances de MySQL Server. Si l'espace disque disponible ou la mémoire disponible est inférieur à certains seuils prédéfinis, Health Monitor émet des avertissements et les consigne dans la table performance_schema.error_log.

Health Monitor utilise des unités de stockage MiB/GiB/TiB où 100 Go = 93 GiB.

Le stockage total disponible pour un système de base de données contient les éléments suivants :

  • Stockage disponible : l'espace disque après la réserve de stockage est exclu du stockage total.
  • Réserve de stockage : espace disque inférieur aux variables de configuration disk_low_space_level et disk_low_space_percent. La valeur par défaut de disk_low_space_level est 5 000 MiB, et la valeur par défaut de disk_low_space_percent est 4 % du stockage total.
  • Stockage critique : l'espace disque dans la réserve de stockage est inférieur au seuil critique, défini par la variable de configuration disk_low_space_critical_level. Il s'agit de l'espace disque minimum viable pour le système afin d'éviter l'épuisement du disque. L'espace de stockage critique par défaut est de 2 000 MiB.

Avertissements relatifs à l'espace disque

Lorsque l'espace disque est inférieur à un certain pourcentage du stockage disponible, Health Monitor émet les avertissements suivants et les consigne dans la table performance_schema.error_log :

  • WARNING_DISK_USAGE_LEVEL_1 : lorsque l'espace disque est inférieur à 20 % du stockage disponible.
  • WARNING_DISK_USAGE_LEVEL_2 : lorsque l'espace disque est inférieur à 10 % du stockage disponible.
  • WARNING_DISK_USAGE_LEVEL_3 : lorsque l'espace disque est inférieur à 5 % du stockage disponible.

Par exemple, si le stockage total est de 100 000 MiB et que la réserve de stockage est inférieure aux deux variables de configuration suivantes :

  • disk_low_space_level : la valeur par défaut est 5 000 MiB.
  • disk_low_space_percent : il s'agit de 4 % du stockage total, soit 4 % de 100 000 MiB = 4 000 MiB.

La réserve de stockage est de 4 000 MiB, ce qui est inférieur aux deux variables de configuration.

Vous pouvez trouver le stockage disponible en excluant la réserve de stockage du stockage total :

100,000 - 4,000 = 96,000 MiB

L'outil de surveillance de l'état émet les avertissements suivants :

  • WARNING_DISK_USAGE_LEVEL_1 : lorsque l'espace disque est inférieur à 20 % du stockage disponible, soit 20/100*96 000 = 19 200 MiB.
  • WARNING_DISK_USAGE_LEVEL_2 : lorsque l'espace disque est inférieur à 10 % du stockage disponible, soit 10/100*96 000 = 9 600 MiB.
  • WARNING_DISK_USAGE_LEVEL_3 : lorsque l'espace disque est inférieur à 5 % du stockage disponible, soit 5/100*96 000 = 4 800 MiB.

Manque important ou durable d'espace disque

Health Monitor définit une pénurie importante ou prolongée d'espace disque lorsque les conditions suivantes sont remplies :

  • Pénurie significative : l'espace disque passe en dessous du seuil critique défini par disk_low_space_critical_level.
  • Pénurie prolongée : l'espace disque passe sous la réserve de stockage, puis reste dans la réserve de stockage pendant la durée définie par la variable de configuration disk_low_space_duration.

En cas de pénurie importante ou prolongée d'espace disque, Health Monitor effectue les opérations suivantes :

  • SUPER_READ_ONLY=ON : définit les variables système, SUPER_READ_ONLY, sur ON dans MySQL Server. MySQL Server rejette toutes les nouvelles instructions d'écriture SQL entrantes (UPDATE, INSERT, DELETE et DDL), indépendamment des utilisateurs et des privilèges. L'exécution des transactions est autorisée, mais les nouvelles écritures sont interdites jusqu'à ce que l'espace disque soit à nouveau disponible. Vous ne pouvez pas charger de données dans le cluster HeatWave lorsque le serveur est en mode SUPER_READ_ONLY.

    Dans certains cas, les verrous globaux de lecture, les validations en cours ou les verrous de métadonnées empêchent Health Monitor de définir la variable système SUPER_READ_ONLY. Dans ce cas, si vous définissez la variable health_monitor.disk_fallback_force, Health Monitor identifie et met fin aux requêtes actives contenant des verrous globaux pour définir la variable système SUPER_READ_ONLY.

  • OFFLINE_MODE=ON : définit la variable système OFFLINE_MODE sur ON dans MySQL Server. MySQL Server déconnecte les utilisateurs client qui ne disposent pas du privilège CONNECTION_ADMIN, met fin aux instructions en cours d'exécution, déverrouille et bloque les nouvelles connexions avec une erreur appropriée.
  • super_read_only_disk_full=ON : définit la variable de statut, super_read_only_disk_full, sur ON, indiquant que le mode lecture seule a été déclenché en raison d'un espace disque faible. Vous pouvez voir la valeur de la variable de statut super_read_only_disk_full à l'aide de l'une des commandes suivantes :
    • SHOW GLOBAL STATUS WHERE variable_name = 'super_read_only_disk_full';
    • SELECT * FROM performance_schema.global_status WHERE variable_name = 'super_read_only_disk_full';

Les variables système modifient le comportement de MySQL Server, tandis que les variables de statut sont des indicateurs statiques de l'état de MySQL Server.

Récupération en fonctionnement normal

Une fois les paramètres SUPER_READ_ONLY et OFFLINE_MODE définis, Health Monitor effectue les opérations suivantes :

  • Vérifiez l'espace disque toutes les minutes .
  • Définissez OFFLINE_MODE=OFF si l'espace disque disponible est récupéré et reste supérieur à disk_recovery_level pendant disk_recovery_time_1 secondes ou plus.
  • Définissez SUPER_READ_ONLY=OFF si l'espace disque disponible est récupéré et reste au-dessus de disk_recovery_level pendant au moins disk_recovery_time_2 secondes.

Les opérations normales reprennent une fois que l'espace disque reste supérieur à disk_recovery_level pendant disk_recovery_time_1 + disk_recovery_time_2 secondes.

Une fois l'espace disque récupéré, Health Monitor efface les variables système, SUPER_READ_ONLY et OFFLINE_MODE, ainsi que la variable de statut, super_read_only_disk_full. Vous n'avez pas besoin de redémarrer l'instance MySQL pour effacer les variables.

En cas de manque important ou soutenu d'espace disque à nouveau, Health Monitor définit à nouveau les variables système SUPER_READ_ONLY et OFFLINE_MODE, ainsi que la variable de statut super_read_only_disk_full sur ON dans MySQL Server.

Avant de remettre une instance principale d'un système de base de données haute disponibilité en mode de fonctionnement normal, Health Monitor vérifie que le serveur est en ligne avec la majorité du groupe. Health Monitor ne définit jamais SUPER_READ_ONLY ni OFFLINE_MODE sur les instances secondaires.

Incrément de récupération, cycle maximal de récupération et fenêtre de récupération

Chaque fois que MySQL Server récupère suite à une pénurie importante ou prolongée d'espace disque, Health Monitor augmente le temps de récupération du disque de disk_recovery_increment secondes.

Par exemple, si disk_recovery_time_1 = 300 secondes, disk_recovery_time_2 = 600 secondes et disk_recovery_increment = 400 secondes, le temps de récupération sur disque pour chaque cycle est le suivant :

  • Cycle 1 : disk_recovery_time_1 = 300 secondes, disk_recovery_time_2 = 600 secondes
  • Cycle 2 : disk_recovery_time_1 = (300 + 400) secondes, disk_recovery_time_2 = (600 + 400) secondes
  • Cycle 3 : disk_recovery_time_1 = (300 + 400 + 400) secondes, disk_recovery_time_2 = (600 + 400 + 400) secondes

L'outil de surveillance de l'état restaure en mode de fonctionnement normal un maximum de disk_recovery_max_cycles fois dans une fenêtre fixe de disk_recovery_window secondes, à partir du dernier cycle de récupération. Par exemple, si disk_recovery_max_cycles est défini sur 5 et que disk_recovery_window est défini sur 86 400 secondes (1 jour), Health Monitor peut rétablir le mode de fonctionnement normal cinq fois dans une fenêtre de 86 400 secondes. Si une pénurie importante ou prolongée se produit la sixième fois dans la même fenêtre, les variables système SUPER_READ_ONLY et OFFLINE_MODE sont définies sur ON.

Le nombre de récupérations est réinitialisé après disk_recovery_window secondes à partir de la dernière récupération.

Avertissements de mémoire

Lorsque la mémoire disponible est inférieure à certains seuils, Health Monitor émet les avertissements suivants :

  • WARNING_MEMORY_USAGE_LEVEL_1 : lorsque la mémoire disponible est inférieure à 1024 MiB.
  • WARNING_MEMORY_USAGE_LEVEL_2 : lorsque la mémoire disponible est inférieure à 500 MiB.
  • WARNING_MEMORY_USAGE_LEVEL_3 : lorsque la mémoire disponible est inférieure à 100 MiB.

Health Monitor consigne dans le journal d'erreurs les informations relatives à la version MySQL, à l'utilisation globale de la mémoire et aux différents paramètres de configuration. Les informations sont consignées sous forme de valeurs séparées par des virgules pour faciliter le transfert dans une feuille de calcul en vue d'une analyse plus approfondie.

Consulter les tables du moniteur d'état

Les tables Health Monitor stockent les données et les statistiques de surveillance dans le schéma de performances de MySQL Server.

Les tables d'intégrité contiennent des informations relatives au stockage sur disque, à la mémoire système et à la mémoire de processus.

Les tables de statistiques contiennent des statistiques relatives à l'utilisation de l'UC système, à l'utilisation du disque, à l'utilisation de la mémoire et au processus serveur MySQL (mysqld). Chaque table de statistiques comporte deux versions, une version à la demande, qui est renseignée avec les relevés en cours lorsque vous l'interrogez, et une version d'historique pour laquelle Health Monitor prélève des échantillons une fois par minute et conserve la valeur des données d'une journée. Les deux versions de la table ont les mêmes colonnes.

Utilisation d'un client de ligne de commande

Utilisez un client de ligne de commande tel que le client MySQL ou le shell MySQL pour afficher les tables Health Monitor.

Cette tâche requiert les éléments suivants :
  1. Pour le shell MySQL, passez en mode SQL en entrant la commande \sql.
  2. Entrez l'instruction SQL suivante, en indiquant la table à afficher :
    SELECT * FROM performance_schema.<health_monitor_table>;

    Par exemple, pour afficher le statut du stockage sur disque, utilisez la commande SQL suivante :

    SELECT * FROM performance_schema.health_block_device;
    Remarque

    Pour afficher la liste complète des tables, vous pouvez indiquer dans <health_monitor_table>. Reportez-vous à Tables de surveillance de l'état.
Vous obtenez une réponse semblable à la suivante, qui affiche les informations d'état du stockage sur disque :

+-------------------------+---------------------+-------------+-----------------+-------------+-------------+
| DEVICE                  | TIMESTAMP           | TOTAL_BYTES | AVAILABLE_BYTES | USE_PERCENT | MOUNT_POINT |
+-------------------------+---------------------+-------------+-----------------+-------------+-------------+
| /dev/mapper/vg_db-lv_db | 2021-08-08 16:12:08 | 53656686592 |     51364134912 |        4.27 | /db         |
| /dev/mapper/vg_db-lv_db | 2021-08-08 16:13:08 | 53656686592 |     51364134912 |        4.27 | /db         |
| /dev/mapper/vg_db-lv_db | 2021-08-08 16:14:08 | 53656686592 |     51364134912 |        4.27 | /db         |
| /dev/mapper/vg_db-lv_db | 2021-08-08 16:15:08 | 53656686592 |     51364134912 |        4.27 | /db         |
| /dev/mapper/vg_db-lv_db | 2021-08-08 16:16:08 | 53656686592 |     51364134912 |        4.27 | /db         |
| /dev/mapper/vg_db-lv_db | 2021-08-08 16:17:08 | 53656686592 |     51364134912 |        4.27 | /db         |
| /dev/mapper/vg_db-lv_db | 2021-08-08 16:18:08 | 53656686592 |     51364134912 |        4.27 | /db         |
| /dev/mapper/vg_db-lv_db | 2021-08-08 16:19:08 | 53656686592 |     51364134912 |        4.27 | /db         |
| /dev/mapper/vg_db-lv_db | 2021-08-08 16:20:08 | 53656686592 |     51364134912 |        4.27 | /db         |
| /dev/mapper/vg_db-lv_db | 2021-08-08 16:21:08 | 53656686592 |     51364134912 |        4.27 | /db         |

Tables du moniteur d'état

Reportez-vous aux tables Health Monitor pour consulter les informations relatives au stockage sur disque, à la mémoire système et aux processus de mémoire.

La liste complète des tables Health Monitor est la suivante :

Table performance_schema.health_block_device

Health Monitor utilise la table performance_schema.health_block_device du schéma de performances de MySQL Server pour stocker les données sur l'espace disque utilisé et disponible dans un système de base de données.

Tableau 17-1 Table de schéma de performance health_block_device

Colonne Description :
DEVICE Nom de périphérique du disque.
TIMESTAMP Heure à laquelle l'échantillon de données de cette ligne a été collecté.
TOTAL_BYTES Quantité totale de stockage sur le périphérique (en octets).
AVAILABLE_BYTES Quantité de stockage disponible sur le périphérique (en octets).
USE_PERCENT Pourcentage d'espace disque utilisé.
MOUNT_POINT Point de montage du périphérique.
Table performance_schema.health_system_memory

Health Monitor utilise la table performance_schema.health_system_memory du schéma de performances de MySQL Server pour stocker les données sur l'utilisation de la mémoire par le système de base de données

Tableau 17-2 Table de schéma de performance health_system_memory

Colonne Description :
TIMESTAMP Heure à laquelle l'échantillon de données de cette ligne a été collecté.
TOTAL_MEMORY Quantité totale de mémoire pour le système, en octets.
AVAILABLE Mémoire disponible pour démarrer de nouvelles applications sans échange, en octets.
USE_PERCENT Pourcentage de mémoire en cours d'utilisation.
MEMORY_FREE Quantité de mémoire inutilisée.
MEMORY_FS_CACHE Cache de page du système de fichiers.
SWAP_TOTAL Quantité totale de mémoire de swap.
SWAP_FREE Quantité totale de mémoire de swap libre.
Table performance_schema.health_process_memory

Health Monitor utilise la table performance_schema.health_process_memory du schéma de performances de MySQL Server pour stocker les données sur l'utilisation de la mémoire par le processus MySQL Server (mysqld) dans le système de base de données.

Tableau 17-3 Table de schéma de performance health_process_memory

Colonne Description :
TIMESTAMP Heure à laquelle l'échantillon de données de cette ligne a été collecté.
PROCESS_NAME Nom du processus MySQL Server.
PID Identificateur système du processus MySQL Server.
VM_RSS Taille du jeu résident du processus de serveur MySQL, en octets.
VM_DATA Taille du segment de données du processus MySQL Server (en octets).
VM_SWAP Taille du segment de swap du processus de serveur MySQL (en octets).
PAGE_FAULTS Nombre d'erreurs de page nécessitant des E/S disque.
Table performance_schema.system_cpu_stats

Health Monitor collecte des statistiques sur l'utilisation de l'UC par le système de base de données. Les statistiques sont disponibles dans deux tables du schéma de performances de MySQL Server, une table à la demande et une table d'historique correspondante. Les deux tables ont les mêmes colonnes.

La table performance_schema.system_cpu_stats du schéma de performances de MySQL Server est remplie avec un échantillon de données lorsque vous l'interrogez. La table performance_schema.system_cpu_stats_history stocke régulièrement des exemples de données.

Les statistiques de ces tables proviennent du fichier système Linux /proc/stat.

Tableau 17-4 Tables des schémas de performance system_cpu_stats et system_cpu_stats_history

Colonne Description :
TIMESTAMP Heure à laquelle l'échantillon de données de cette ligne a été collecté.
CPU La ligne d'UC affiche les données d'utilisation agrégées de l'UC, et chaque ligne numérotée (par exemple, cpu0, cpu1) affiche les données d'un processus individuel. Toutes les durées sont en millisecondes.
USER_MS Temps passé en mode utilisateur.
NICE_MS Temps passé en mode utilisateur avec une priorité faible.
SYSTEM_MS Temps passé en mode système.
IDLE_MS Temps passé dans la tâche inactive.
IOWAIT_MS Temps passé à attendre la fin des E/S.
IRQ_MS Temps consacré à la maintenance des interruptions matérielles.
SOFTIRQ_MS Le temps consacré à la maintenance des logiciels s'interrompt.
STEAL_MS Temps passé à exécuter d'autres systèmes d'exploitation dans un environnement virtualisé.
GUEST_MS Temps passé à exécuter une CPU virtuelle avec une priorité normale.
GUEST_NICE_MS Temps passé à exécuter une CPU virtuelle avec une priorité faible.
Table performance_schema.system_disk_stats

Health Monitor collecte des statistiques sur l'utilisation du disque par le système de base de données. Les statistiques sont disponibles dans deux tables du schéma de performances de MySQL Server, une table à la demande et une table d'historique correspondante. Les deux tables ont les mêmes colonnes.

La table performance_schema.system_disk_stats du schéma de performances de MySQL Server est remplie avec un échantillon de données lorsque vous l'interrogez. La table performance_schema.system_disk_stats_history stocke régulièrement des exemples de données.

Les statistiques de ces tables proviennent du fichier système Linux /proc/diskstats.

Tableau 17-5 Tables des schémas de performance system_disk_stats et system_disk_stats_history

Colonne Description :
TIMESTAMP Heure à laquelle l'échantillon de données de cette ligne a été collecté.
DEVICE Nom du périphérique pour ce disque.
READS Nombre de lectures terminées.
READ_BYTES Nombre d'octets lus.
READ_TIME_MS Temps passé à lire, en millisecondes.
WRITES Nombre d'écritures terminées.
WRITE_BYTES Nombre d'octets écrits.
WRITE_TIME_MS Temps passé à écrire, en millisecondes.
FLUSHES Le nombre de demandes de vidage a réussi.
FLUSH_TIME_MS Temps de vidage, en millisecondes.
Table performance_schema.system_memory_stats

Health Monitor collecte des statistiques sur l'utilisation de la mémoire par le système de base de données. Les statistiques sont disponibles dans deux tables du schéma de performances de MySQL Server, une table à la demande et une table d'historique correspondante. Les deux tables ont les mêmes colonnes.

La table performance_schema.system_memory_stats du schéma de performances de MySQL Server est remplie avec un échantillon de données lorsque vous l'interrogez. La table performance_schema.system_memory_stats_history stocke régulièrement des exemples de données.

Les statistiques de ces tables proviennent du fichier système Linux /proc/meminfo.

Tableau 17-6 Tables des schémas de performance system_memory_stats et system_memory_stats_history

Colonne Description :
TIMESTAMP Heure à laquelle l'échantillon de données de cette ligne a été collecté.
TOTAL_BYTES Mémoire système utilisable totale, en octets.
FREE_BYTES La mémoire non utilisée.
USED_BYTES Mémoire totale utilisée.
AVAILABLE_BYTES Mémoire estimée disponible pour le démarrage de nouvelles applications, en octets.
BUFFER_BYTES Quantité de mémoire utilisée pour le stockage temporaire des blocs de disque brut.
CACHED_BYTES Quantité de mémoire utilisée pour mettre en cache les fichiers lus à partir du disque (cache de page).
SLAB_BYTES Quantité de mémoire utilisée pour mettre en cache les structures de données dans le noyau.
SWAP_TOTAL_BYTES Quantité totale d'espace de swap disponible sur le disque.
SWAP_FREE_BYTES Quantité totale d'espace de swap actuellement inutilisée.
SWAP_USED_BYTES Quantité totale de mémoire qui a été échangée à partir de la RAM et qui est temporairement sur le disque.
SWAP_IN Quantité de mémoire permutée vers la mémoire RAM à partir du disque, en ko par seconde.
SWAP_OUT Quantité de mémoire échangée vers le disque à partir de la RAM, en ko par seconde.
Table performance_schema.system_process_stats

Health Monitor collecte des statistiques pour chaque thread utilisé par le processus MySQL Server dans le système de base de données. Les statistiques sont disponibles dans deux tables du schéma de performances de MySQL Server, une table à la demande et une table d'historique correspondante. Les deux tables ont les mêmes colonnes.

La table performance_schema.system_process_stats du schéma de performances de MySQL Server est remplie avec un échantillon de données lorsque vous l'interrogez. La table performance_schema.system_process_stats_history stocke régulièrement des exemples de données.

Pour les statistiques de processus, la table à la demande renvoie une ligne pour chaque thread utilisé par le processus mysqld. Cependant, la table d'historique stocke une seule ligne pour chaque échantillon, avec les totaux agrégés pour tous les threads utilisés par le processus mysqld.

Les statistiques de ces tables proviennent du fichier système Linux /proc/self/task/[pid]/stat.

Tableau 17-7 Tables des schémas de performance system_process_stats et system_process_stats_history

Colonne Description :
TIMESTAMP Heure à laquelle l'échantillon de données de cette ligne a été collecté.
PID ID de processus.
PROCESS_NAME Nom du processus, à savoir mysqld.
TID ID de thread pour chaque thread affiché sur cette ligne.
THREAD_NAME Nom du thread instrumenté pour le thread individuel affiché sur cette ligne.
STATE Caractère indiquant l'état du thread au moment de l'échantillon : en cours d'exécution (R), en veille dans une attente interruptible (S), en attente de mise en veille sur disque sans interruption (D), thread zombie (Z), arrêté sur un signal ou une trace arrêté (T), pagination (W), mort (X), wakekill (K), réveil (W) ou mis en attente (P).
UTIME_MS Temps passé par ce thread en mode utilisateur, en millisecondes.
STIME_MS Temps passé par ce thread en mode noyau, en millisecondes.
CUTIME_MS Temps passé par les processus enfant de ce processus en mode utilisateur, en millisecondes.
CSTIME_MS Temps passé par les processus enfant de ce processus en mode noyau, en millisecondes.
NUM_THREADS Le numéro des fils dans ce processus.
VSIZE_BYTES Taille de la mémoire virtuelle en octets.
RSS_BYTES Nombre d'octets dont dispose le processus dans la mémoire réelle (taille résidente définie).
RSSLIM_BYTES Limite en octets de la taille résidente définie du processus.
PROCESSOR Numéro de CPU sur lequel le thread a été exécuté pour la dernière fois.
DELAYACCT_BLKIO_MS Retards d'E/S de bloc agrégés, en millisecondes.
GUEST_TIME_MS Temps invité du processus, en millisecondes.
CGUEST_TIME_MS Temps invité pour les processus enfant du processus, en millisecondes.
READ_BYTES Nombre d'octets extraits par ce processus de la couche de stockage.
WRITE_BYTES Nombre d'octets envoyés par ce processus à la couche de stockage.

Afficher les variables Health Monitor

Les variables Health Monitor sont des paramètres de configuration de l'activité de surveillance dans le système de base de données. Vous ne pouvez pas modifier les valeurs de ces variables.

Utilisation d'un client de ligne de commande

Utilisez un client de ligne de commande tel que le client MySQL ou le shell MySQL pour visualiser les variables de surveillance de l'état et leurs valeurs.

Cette tâche requiert les éléments suivants :
  • Système de base de données en cours d'exécution.
  • Client de ligne de commande tel que le client MySQL ou le shell MySQL connecté au système de base de données. Reportez-vous à Connexion à un système de base de données.
Pour afficher les variables de l'outil de surveillance de l'état, procédez comme suit :
  1. Pour le shell MySQL, passez en mode SQL en entrant la commande \sql.
  2. Entrez l'instruction SQL suivante :
    show variables like 'health_monitor%';
Vous obtenez une réponse semblable à la suivante :
+----------------------------------------------+-------+
| Variable_name | Value |
+----------------------------------------------+-------+
| health_monitor.disk_fallback_enable | ON |
| health_monitor.disk_fallback_force | OFF |
| health_monitor.disk_low_space_critical_level | 2000 |
| health_monitor.disk_low_space_duration | 300 |
| health_monitor.disk_low_space_level | 5000 |
| health_monitor.disk_low_space_percent | 4 |
| health_monitor.disk_monitored | /db |
| health_monitor.disk_recovery_enable | ON |
| health_monitor.disk_recovery_increment | 300 |
| health_monitor.disk_recovery_level | 5 |
| health_monitor.disk_recovery_max_cycles | 3 |
| health_monitor.disk_recovery_time_1 | 300 |
| health_monitor.disk_recovery_time_2 | 300 |
| health_monitor.disk_recovery_window | 86400 |
| health_monitor.disk_retention | 86400 |
| health_monitor.disk_running | ON |
| health_monitor.disk_sample_rate | 60 |
| health_monitor.disk_usage_warning_level_1 | 20 |
| health_monitor.disk_usage_warning_level_2 | 10 |
| health_monitor.disk_usage_warning_level_3 | 5 |
...
+----------------------------------------------+-------+
35 rows in set (0.01 sec)

Variables de l'outil de surveillance de l'état

Toutes les variables système de Health Monitor sont préfixées par health_monitor. Vous ne pouvez pas modifier les valeurs des variables à partir de leurs valeurs par défaut dans un système de base de données.

Remarque

Le préfixe health_monitor. ne figure pas dans le tableau ci-après. Par exemple, disk_fallback_enable est en fait health_monitor.disk_fallback_enable.

Tableau 17-8 Variables système de l'outil de surveillance de l'état

Variable système Valeur par défaut Description :
disk_fallback_enable ON En cas de pénurie importante ou prolongée d'espace disque, Health Monitor définit la variable système SUPER_READ_ONLY et OFFLINE_MODE sur ON dans MySQL Server.
disk_fallback_force OFF Mettez fin aux requêtes de premier plan qui contiennent des verrous de métadonnées globaux et réessayez de définir SUPER_READ_ONLY.
disk_low_space_critical_level 2 000 Seuil d'espace disque minimal critique dans MiB. Si l'espace disque disponible est inférieur à cette valeur pour une durée quelconque, Health Monitor définit les modes SUPER_READ_ONLY et OFFLINE_MODE sur MySQL Server.
disk_low_space_duration 300 Durée (en secondes) pendant laquelle l'espace disque disponible peut rester inférieur à disk_low_space_level ou à disk_low_space_percent (selon la valeur la plus basse) avant que Health Monitor ne définisse les modes SUPER_READ_ONLY et OFFLINE_MODE sur MySQL Server.
disk_low_space_level 5 000 Seuil d'espace faible pour la réserve de stockage, dans MiB. Si l'espace disque disponible est inférieur à ce pourcentage de stockage disponible total pendant plus longtemps que la valeur disk_low_space_duration, Health Monitor définit les modes SUPER_READ_ONLY et OFFLINE_MODE sur MySQL Server.
disk_low_space_percent 4 Seuil d'espace faible pour la réserve de stockage, exprimé en pourcentage. Si l'espace disque disponible est inférieur à ce pourcentage de stockage disponible total pendant plus longtemps que la valeur disk_low_space_duration, Health Monitor définit les modes SUPER_READ_ONLY et OFFLINE_MODE sur MySQL Server.
disk_monitored /db Point de montage des statistiques de disque.
disk_retention 86 400

Nombre de secondes pendant lesquelles chaque échantillon de données est conservé dans les tables d'historique pour les données d'utilisation du disque.

La valeur minimale est de 1 seconde, la valeur par défaut est de 86400 secondes (1 jour) et la valeur maximale est de 864000 secondes (10 jours).

Si memory_sample_rate=60 et memory_retention=86400, 1440 échantillons sont conservés, le plus ancien étant supprimé toutes les 60 secondes.

disk_recovery_enable ON Définissez la variable sur ON pour permettre la récupération suite à une pénurie prolongée ou importante et sur OFF pour désactiver la récupération suite à une pénurie prolongée ou importante.
disk_recovery_level 5% Pourcentage d'espace disque total au-dessus de la réserve de stockage.
  • Si le stockage disponible reste au-dessus du niveau disk_recovery_level pendant disk_recovery_time_1 secondes, l'outil de surveillance de l'état définit OFFLINE_MODE = OFF.
  • Si le stockage reste au-dessus du niveau disk_recovery_level pendant disk_recovery_time_2 secondes supplémentaires, l'outil de surveillance de l'état définit SUPER_READ_ONLY = OFF.
disk_recovery_time_1 300 secondes Durée (en secondes) pendant laquelle le stockage disponible doit rester au-dessus de disk_recovery_level avant que l'outil de surveillance de l'état ne définisse OFFLINE_MODE = OFF.
disk_recovery_time_2 300 secondes Délai supplémentaire (en secondes) pendant lequel le stockage disponible doit rester au-dessus de disk_recovery_level après disk_recovery_time_1 avant que l'outil de surveillance de l'état ne définisse SUPER_READ_ONLY = OFF.
disk_recovery_max_cycles 3 cycles Nombre maximal de fois où le serveur MySQL peut être remis en mode de fonctionnement normal au cours de la période disk_recovery_cycle_window.
disk_recovery_window 86400 secondes Durée (en secondes) après le dernier cycle de récupération réussi après laquelle le nombre de récupérations est réinitialisé. La valeur 0 signifie que le nombre de récupérations n'est jamais réinitialisé.
disk_recovery_increment 300 secondes Temps (en secondes) nécessaire pour augmenter les horloges de récupération disk_recovery_time_1 et disk_recovery_time_2 pour chaque cycle de récupération.
disk_running ON Etat actif de la surveillance de disque de l'état.
disk_sample_rate 60 Fréquence de collecte des données de disque, en secondes. Par défaut, les données sont collectées toutes les 60 secondes. Le taux d'échantillonnage minimal est de 1 (chaque seconde) et le taux maximal est de 86400 (une fois par jour).
disk_usage_warning_level_1 20 Pourcentage d'espace disque disponible supérieur à la valeur disk_low_space_level définie. Si l'espace disque disponible est inférieur à ce niveau, l'avertissement WARNING_DISK_USAGE_LEVEL_1 est déclenché.
disk_usage_warning_level_2 10 Pourcentage d'espace disque disponible, supérieur à la valeur disk_low_space_level définie. Si l'espace disque disponible est inférieur à ce niveau, l'avertissement WARNING_DISK_USAGE_LEVEL_2 est déclenché.
disk_usage_warning_level_3 5 Pourcentage d'espace disque disponible, supérieur à la valeur disk_low_space_level définie. Si l'espace disque disponible est inférieur à ce niveau, l'avertissement WARNING_DISK_USAGE_LEVEL_3 est déclenché.
memory_reporting ON Permet de générer des états sur les données de mémoire.
memory_retention 86 400

Nombre de secondes pendant lesquelles chaque échantillon de données est conservé dans les tables d'historique pour les données d'utilisation de la mémoire.

La valeur minimale est de 1 seconde, la valeur par défaut est de 86400 secondes (1 jour) et la valeur maximale est de 864000 secondes (10 jours).

memory_running ON Etat actif de la surveillance de mémoire de l'outil de surveillance de l'état.
memory_sample_rate 60 Fréquence de collecte des données de mémoire, en secondes. Par défaut, les données sont collectées toutes les 60 secondes. Le taux d'échantillonnage minimal est de 1 (chaque seconde) et le taux maximal est de 86400 (une fois par jour).
memory_usage_warning_level_1 1 024 Quantité de mémoire disponible (MiB). Si la mémoire disponible est inférieure à ce niveau, l'avertissement WARNING_MEMORY_USAGE_LEVEL_1 est déclenché.
memory_usage_warning_level_2 500 Quantité de mémoire disponible (MiB). Si la mémoire disponible est inférieure à ce niveau, l'avertissement WARNING_MEMORY_USAGE_LEVEL_2 est déclenché.
memory_usage_warning_level_3 100 Quantité de mémoire disponible (MiB). Si la mémoire disponible est inférieure à ce niveau, l'avertissement WARNING_MEMORY_USAGE_LEVEL_3 est déclenché.
status_interval 10 Fréquence (en multiples de disk_sample_rate) d'envoi des messages de statut à la table de journalisation des erreurs. Par exemple, si status_interval = 10 et disk_sample_rate = 60 secondes, l'outil de surveillance de l'état envoie un message de statut à la table de journalisation des erreurs toutes les 600 secondes.
system_cpu_stats_history ON Indique si les statistiques d'utilisation de l'UC système sont collectées et stockées dans la table de schéma de performances system_cpu_stats_history. Si ces statistiques ne sont pas stockées, vous pouvez toujours accéder à un cliché à la demande en interrogeant la table system_cpu_stats.
system_disk_stats_history ON Indique si les statistiques d'utilisation du disque système sont collectées et stockées dans la table de schéma de performances system_memory_stats_history. Si ces statistiques ne sont pas stockées, vous pouvez toujours accéder à un cliché à la demande en interrogeant la table system_memory_stats.
system_memory_stats_history ON Indique si les statistiques d'utilisation de la mémoire système sont collectées et stockées dans la table de schéma de performances system_disk_stats_history. Si ces statistiques ne sont pas stockées, vous pouvez toujours accéder à un cliché à la demande en interrogeant la table system_disk_stats.
system_process_stats_history ON Indique si les statistiques de processus serveur MySQL (mysqld) sont collectées et stockées dans la table de schéma de performances system_process_stats_history. Si ces statistiques ne sont pas stockées, vous pouvez toujours accéder à un cliché à la demande en interrogeant la table system_process_stats.
system_retention 86 400

Nombre de secondes pendant lesquelles chaque échantillon de données est conservé dans les tables d'historique pour les statistiques système et de processus.

La valeur minimale est de 1 seconde, la valeur par défaut est de 86400 secondes (1 jour) et la valeur maximale est de 864000 secondes (10 jours).

system_running ON Indique si les statistiques système sont collectées par Health Monitor. Lorsque cette valeur est définie sur ON, les tables de statistiques relatives à l'utilisation de l'UC système, à l'utilisation du disque, à l'utilisation de la mémoire et au processus serveur MySQL (mysqld) sont disponibles, et les tables d'historique correspondantes sont remplies si leurs variables système sont définies sur ON.
system_sample_rate 60 Fréquence de collecte des statistiques système, en secondes. Par défaut, les données sont collectées toutes les 60 secondes. Le taux d'échantillonnage minimal est de 1 (chaque seconde) et le taux maximal est de 86400 (une fois par jour).

Messages de l'outil de surveillance de l'état

Les erreurs, les avertissements et les mises à jour de statut de l'outil de surveillance de l'état sont consignés dans performance_schema.error_log. Health Monitor abrége TiB en T, GiB en G et MiB en M dans le journal d'erreurs. Par exemple, 306.6G = 306,6 GiB = 329,2 Go.

Tableau 17-9 Messages de l'outil de surveillance de l'état

Type de message Description :
Mise à jour de statut L'outil de surveillance de l'état émet une mise à jour de statut de routine conformément au nombre de secondes défini par sample_rate * status_interval. Exemples :
[Note] [MY-013694] [Health] Disk Collector: Started: running=ON, monitored='/db', 
sample rate=30s, retention=86400s, max samples=2880, status interval=1, low level=100 MiB, 
low percent=4%, critical level=10 MiB, warning levels=20/10/5%, fallback (enable=ON, force=ON), 
low space duration=300s, recovery (enable=ON, level=5%, time 1=300s, time 2=300s, max cycles=3,
increment=10, window=86400)
Avertissement lié à un seuil Si la quantité d'espace disponible est inférieure à l'un des seuils définis par disk_usage_warning_level_*, Health Monitor émet un avertissement. L'exemple suivant affiche l'avertissement du seuil disk_usage_warning_level_2, défini à 4 % de l'espace total au-dessus de la limite d'espace faible :
[Warning] [MY-013695] [Health] Disk: Warning Level 2 (62M): monitored='/db', 
available=59M, total=466M, used=87.2%, low limit=18M, critical=10M, recovery=40M, 
warnings=107M/62M/40M
Avertissement lié à disk_low_space_duration Si l'espace disque disponible tombe en dessous de la limite inférieure d'espace de 18 GiB, Health Monitor démarre l'horloge de restauration et émet un avertissement. Exemples :
[Warning] [MY-013695] [Health] Disk: Low Level (18M): Fallback Timer Running: 300 seconds 
until SUPER_READ_ONLY: monitored='/db', available=15M, total=466M, used=96.6%, low limit=18M, 
critical=10M, recovery=40M, warnings=107M/62M/40M
Avertissement lié au mode OFFLINE/SUPER_READ_ONLY Si l'espace disque disponible reste inférieur à la limite d'espace faible pendant plus de disk_low_space_duration secondes, l'outil de surveillance de l'état place le serveur dans SUPER_READ_ONLY et OFFLINE_MODE. Exemples :
[Warning] [MY-013695] [Health] Disk: Low Level (18M): Fallback Timer Running: 30 seconds until 
SUPER_READ_ONLY: monitored='/db', available=15M, total=466M, used=96.6%, low limit=18M, critical=10M, 
recovery=40M, warnings=107M/62M/40M
[Warning] [MY-013695] [Health] Disk: Low Level (18M): Fallback Timer Expired
[Warning] [MY-013695] [Health] Disk: Low Level (18M): OFFLINE_MODE = ON
[Warning] [MY-013695] [Health] Disk: Low Level (18M): SUPER_READ_ONLY = ON
Reportez-vous à Résolution des problèmes SUPER_READ_ONLY et OFFLINE_MODE causés par un faible espace de stockage libre.
Avertissement critique Si l'espace disque disponible descend en dessous de disk_low_space_critical_level quelle que soit la durée, l'outil de surveillance de l'état met le serveur en mode SUPER_READ_ONLY. Exemples :
[Warning] [MY-013695] [Health] Disk Collector: CRITICAL LEVEL (2G): 
OFFLINE_MODE=ON: mount point='/db', available=1.9G, total=1024G, 
used=99.1%, low limit=5.0G, critical=2.0G, warnings=204G/102G/51G 
[Warning] [MY-013695] [Health] Disk Collector: CRITICAL LEVEL (2G): 
SUPER_READ_ONLY=ON: mount point='/db', available=1.9G, total=1024G, 
used=99.1%, low limit=5.0G, critical=2.0G, warnings=204G/102G/51G
Avertissement d'annulation d'horloge Si l'espace disponible repasse au-dessus de la limite d'espace faible avant la fin du délai disk_low_space_duration (en secondes), l'horloge du mode de basculement est annulée et l'outil de surveillance de l'état émet un message de statut, ou d'avertissement si l'espace disponible se trouve toujours dans la plage d'avertissement. Exemples :
[Warning] [MY-013695] [Health] Disk: Low Level (18M): Fallback Timer Canceled
[Warning] [MY-013695] [Health] Disk: Warning Level 1 (107M): monitored='/db', available=79M, 
total=466M, used=82.9%, low limit=18M, critical=10M, recovery=40M, warnings=107M/62M/40M
Avertissement de mémoire Si la mémoire disponible est inférieure à l'un des seuils définis par memory_usage_warning_level_*, Health Monitor émet un avertissement qui inclut les détails de diagnostic de la mémoire dans des valeurs séparées par des virgules (csv). Les données CSV de l'exemple suivant ont été supprimées en raison d'une contrainte d'espace.
[Warning] [MY-013695] [Health] MEMORY: WARNING LEVEL 1 (1.0G): available=950M, total=7.5G, used=87.6%, 
mysqld=5.9G, warnings=1.0G/500M/100M
[Warning] [MY-013695] [Health]  
[Warning] [MY-013695] [Health] ===== MEMORY DIAGNOSTICS BEGIN (csv) =====

---------------------------------------
TOTAL ALLOCATED MEMORY AND BUFFER SIZES
---------------------------------------
keyword,value
mysql_version,8.0.33
total_allocated,15121493496
innodb_buffer_pool_size,13958643712
join_buffer_size,262144
----------------------------------------
MEMORY AGGREGATION PER LOGICAL COMPONENT
----------------------------------------
component,current_count,current_alloc,max_alloc,min_alloc
...<csv data>...

-----------------------
MEMORY USAGE PER THREAD
-----------------------
thread_id,user,current_count_used,current_allocated,current_avg_alloc,current_max_alloc,total_allocated
...<csv data>...

-----------------------
MEMORY USAGE PER USER
-----------------------
user,current_count_used,current_allocated,current_avg_alloc,current_max_alloc,total_allocated
...<csv data>...

-------------------
PROCESSLIST DETAILS
-------------------
thd_id,conn_id,user,db,command,state,time,current_statement,execution_engine,statement_latency,progress,
lock_latency,cpu_latency,rows_examined,rows_sent,rows_affected,tmp_tables,tmp_disk_tables,full_scan,
last_statement,last_statement_latency,current_memory,last_wait,last_wait_latency,source,trx_latency,
trx_state,trx_autocommit,pid,program_name
...<csv data>...

---------------
SESSION DETAILS
---------------
thd_id,conn_id,user,db,command,state,time,current_statement,execution_engine,statement_latency,progress,
lock_latency,cpu_latency,rows_examined,rows_sent,rows_affected,tmp_tables,tmp_disk_tables,full_scan,
last_statement,last_statement_latency,current_memory,last_wait,last_wait_latency,source,trx_latency,
trx_state,trx_autocommit,pid,program_name
...<csv data>...

--------------------------------------------------------
CURRENT STATEMENT PER THREAD ORDERED BY STATEMENT MEMORY
--------------------------------------------------------
THREAD_ID,EVENT_ID,END_EVENT_ID,EVENT_NAME,SOURCE,TIMER_START,TIMER_END,TIMER_WAIT,LOCK_TIME,SQL_TEXT,
DIGEST,DIGEST_TEXT,CURRENT_SCHEMA,OBJECT_TYPE,OBJECT_SCHEMA,OBJECT_NAME,OBJECT_INSTANCE_BEGIN,MYSQL_ERRNO,
RETURNED_SQLSTATE,MESSAGE_TEXT,ERRORS,WARNINGS,ROWS_AFFECTED,ROWS_SENT,ROWS_EXAMINED,CREATED_TMP_DISK_TABLES,
CREATED_TMP_TABLES,SELECT_FULL_JOIN,SELECT_FULL_RANGE_JOIN,SELECT_RANGE,SELECT_RANGE_CHECK,SELECT_SCAN,
SORT_MERGE_PASSES,SORT_RANGE,SORT_ROWS,SORT_SCAN,NO_INDEX_USED,NO_GOOD_INDEX_USED,NESTING_EVENT_ID,
NESTING_EVENT_TYPE,NESTING_EVENT_LEVEL,STATEMENT_ID,CPU_TIME,MAX_CONTROLLED_MEMORY,MAX_TOTAL_MEMORY,
EXECUTION_ENGINE
...<csv data>...

----------------------------------------------------------
CURRENT STATEMENT PER THREAD FOR THREADS USING MOST MEMORY
----------------------------------------------------------
THREAD_ID,EVENT_ID,END_EVENT_ID,EVENT_NAME,SOURCE,TIMER_START,TIMER_END,TIMER_WAIT,LOCK_TIME,SQL_TEXT,
DIGEST,DIGEST_TEXT,CURRENT_SCHEMA,OBJECT_TYPE,OBJECT_SCHEMA,OBJECT_NAME,OBJECT_INSTANCE_BEGIN,MYSQL_ERRNO,
RETURNED_SQLSTATE,MESSAGE_TEXT,ERRORS,WARNINGS,ROWS_AFFECTED,ROWS_SENT,ROWS_EXAMINED,CREATED_TMP_DISK_TABLES,
CREATED_TMP_TABLES,SELECT_FULL_JOIN,SELECT_FULL_RANGE_JOIN,SELECT_RANGE,SELECT_RANGE_CHECK,SELECT_SCAN,
SORT_MERGE_PASSES,SORT_RANGE,SORT_ROWS,SORT_SCAN,NO_INDEX_USED,NO_GOOD_INDEX_USED,NESTING_EVENT_ID,
NESTING_EVENT_TYPE,NESTING_EVENT_LEVEL,STATEMENT_ID,CPU_TIME,MAX_CONTROLLED_MEMORY,MAX_TOTAL_MEMORY,
EXECUTION_ENGINE,thread_id
...<csv data>...

----------------------------------------------------------
STATEMENT HISTORY PER THREAD FOR THREADS USING MOST MEMORY
----------------------------------------------------------
THREAD_ID,EVENT_ID,END_EVENT_ID,EVENT_NAME,SOURCE,TIMER_START,TIMER_END,TIMER_WAIT,LOCK_TIME,SQL_TEXT,
DIGEST,DIGEST_TEXT,CURRENT_SCHEMA,OBJECT_TYPE,OBJECT_SCHEMA,OBJECT_NAME,OBJECT_INSTANCE_BEGIN,MYSQL_ERRNO,
RETURNED_SQLSTATE,MESSAGE_TEXT,ERRORS,WARNINGS,ROWS_AFFECTED,ROWS_SENT,ROWS_EXAMINED,CREATED_TMP_DISK_TABLES,
CREATED_TMP_TABLES,SELECT_FULL_JOIN,SELECT_FULL_RANGE_JOIN,SELECT_RANGE,SELECT_RANGE_CHECK,SELECT_SCAN,
SORT_MERGE_PASSES,SORT_RANGE,SORT_ROWS,SORT_SCAN,NO_INDEX_USED,NO_GOOD_INDEX_USED,NESTING_EVENT_ID,
NESTING_EVENT_TYPE,NESTING_EVENT_LEVEL,STATEMENT_ID,CPU_TIME,MAX_CONTROLLED_MEMORY,MAX_TOTAL_MEMORY,
EXECUTION_ENGINE,thread_id
...<csv data>...

-----------------------------
EVENTS ALLOCATING MOST MEMORY
-----------------------------
processlist_id,processlist_user,thread_id,event_name,count_alloc,count_free,current_count_used,
current_number_of_bytes_used
...<csv data>...

----------------------
BUFFER POOL STATISTICS
----------------------
POOL_ID,POOL_SIZE,FREE_BUFFERS,DATABASE_PAGES,OLD_DATABASE_PAGES,MODIFIED_DATABASE_PAGES,PENDING_DECOMPRESS,
PENDING_READS,PENDING_FLUSH_LRU,PENDING_FLUSH_LIST,PAGES_MADE_YOUNG,PAGES_NOT_MADE_YOUNG,PAGES_MADE_YOUNG_RATE,
PAGES_MADE_NOT_YOUNG_RATE,NUMBER_PAGES_READ,NUMBER_PAGES_CREATED,NUMBER_PAGES_WRITTEN,PAGES_READ_RATE,
PAGES_CREATE_RATE,PAGES_WRITTEN_RATE,NUMBER_PAGES_GET,HIT_RATE,YOUNG_MAKE_PER_THOUSAND_GETS,
NOT_YOUNG_MAKE_PER_THOUSAND_GETS,NUMBER_PAGES_READ_AHEAD,NUMBER_READ_AHEAD_EVICTED,READ_AHEAD_RATE,
READ_AHEAD_EVICTED_RATE,LRU_IO_TOTAL,LRU_IO_CURRENT,UNCOMPRESS_TOTAL,UNCOMPRESS_CURRENT
...<csv data>...