Moniteur d'état

Le moniteur d'état collecte des statistiques sur l'utilisation de l'UC système, l'utilisation du disque, l'utilisation de la mémoire et le processus serveur MySQL (mysqld). Les statistiques sont consignées dans des tables d'historique, pour lesquelles le moniteur d'état prélève des échantillons une fois par minute et conserve une valeur journalière de données. Vous pouvez également accéder à ces statistiques dans des tables qui sont alimentées avec des lectures courantes sur demande lorsque vous les interrogez.

Aperçu du moniteur d'état

Le moniteur d'état échantillonne les informations sur l'espace disque, les informations sur la mémoire système et les informations sur la mémoire de traitement toutes les soixante secondes, et stocke une journée de données dans des tables du schéma de performance de MySQL Server. Si l'espace disque disponible ou la mémoire disponible tombe en dessous de certains seuils prédéfinis, le moniteur d'état émet des avertissements et le 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 : Espace disque dans la réserve de stockage inférieur au seuil critique, qui est 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 2 000 MiB.

Avertissements relatifs à l'espace disque

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

  • WARNING_DISK_USAGE_LEVEL_1 : Lorsque l'espace disque tombe en dessous de 20 % du stockage disponible.
  • WARNING_DISK_USAGE_LEVEL_2 : Lorsque l'espace disque tombe en dessous de 10 % du stockage disponible.
  • WARNING_DISK_USAGE_LEVEL_3 : Lorsque l'espace disque tombe en dessous de 5 % du stockage disponible.

Par exemple, si le stockage total est de 100 000 MiB et que la réserve de stockage est moindre des 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, c'est-à-dire 4 % de 100 000 MiB = 4 000 MiB.

La réserve de stockage est de 4 000 MiB, ce qui est le moins élevé des 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

Le moniteur d'état émet les avertissements suivants :

  • WARNING_DISK_USAGE_LEVEL_1 : Lorsque l'espace disque tombe en dessous de 20 % du stockage disponible, soit 20/100*96 000 = 19 200 MiB.
  • WARNING_DISK_USAGE_LEVEL_2 : Lorsque l'espace disque tombe en dessous de 10 % du stockage disponible, soit 10/100*96 000 = 9 600 MiB.
  • WARNING_DISK_USAGE_LEVEL_3 : Lorsque l'espace disque tombe en dessous de 5 % du stockage disponible, soit 5/100*96 000 = 4 800 MiB.

Pénurie importante ou soutenue d'espace disque

Le moniteur d'état définit une pénurie importante ou soutenue d'espace disque lorsque les conditions suivantes sont remplies :

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

Lorsqu'il y a une pénurie importante ou soutenue d'espace disque, Health Monitor effectue les opérations suivantes :

  • SUPER_READ_ONLY=ON : Règle les variables de système, SUPER_READ_ONLY, à ON dans MySQL Server. MySQL Server rejette tous les nouveaux énoncés d'écriture SQL entrants (UPDATE, INSERT, DELETE et DDL), quels que soient les utilisateurs et les privilèges. Les transactions en cours d'exécution sont autorisées, mais les nouvelles écritures sont interdites jusqu'à ce que l'espace disque soit de nouveau disponible. Vous ne pouvez pas charger de données dans la grappe HeatWave lorsque le serveur est en mode SUPER_READ_ONLY.

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

  • OFFLINE_MODE=ON : Règle la variable de système OFFLINE_MODE à ON dans MySQL Server. MySQL Server déconnecte les utilisateurs clients qui n'ont pas le privilège CONNECTION_ADMIN, arrête les énoncés en cours d'exécution et libère les verrouillages, et bloque les nouvelles connexions avec une erreur appropriée.
  • super_read_only_disk_full=ON : Règle la variable de statut super_read_only_disk_full à ON pour indiquer que le mode de lecture seule a été déclenché en raison d'un faible espace disque. Vous pouvez voir la valeur de la variable de statut super_read_only_disk_full avec 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 de système modifient le comportement de MySQL Server tandis que les variables de statut sont des indicateurs statiques de l'état de MySQL Server.

Reprise à l'opération normale

Une fois que SUPER_READ_ONLY et OFFLINE_MODE sont définis, le moniteur d'état 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 au-dessus de 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 disk_recovery_time_2 secondes ou plus.

Les opérations normales sont reprises une fois que l'espace disque reste au-dessus de disk_recovery_level pendant disk_recovery_time_1 + disk_recovery_time_2 secondes.

Une fois l'espace disque récupéré, le moniteur d'état efface les variables de système, SUPER_READ_ONLY et OFFLINE_MODE, et 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 nouvelle pénurie importante ou soutenue d'espace disque, le moniteur d'état règle à nouveau les variables de système, SUPER_READ_ONLY et OFFLINE_MODE, et la variable de statut, super_read_only_disk_full, à ON dans MySQL Server.

Avant de retourner une instance principale d'un système de base de données à haute disponibilité en mode de fonctionnement normal, le moniteur d'état vérifie que le serveur est en ligne avec la majorité du groupe. Le moniteur d'état ne définit jamais SUPER_READ_ONLY ou 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 se rétablit en raison d'une pénurie importante ou soutenue d'espace disque, le moniteur d'état augmente le temps de récupération de disque de disk_recovery_increment secondes.

Par exemple, si disk_recovery_time_1 = 300 secondes, et disk_recovery_time_2 = 600 secondes, et disk_recovery_increment = 400 secondes, le temps de récupération de 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

Le moniteur d'état restaure en mode de fonctionnement normal disk_recovery_max_cycles fois au maximum 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 réglé à 5 et que disk_recovery_window est réglé à 86 400 secondes (1 jour), le moniteur d'état peut rétablir le mode de fonctionnement normal cinq fois dans une fenêtre de 86 400 secondes. Si une pénurie importante ou soutenue se produit la sixième fois dans la même fenêtre, les variables de système, SUPER_READ_ONLY et OFFLINE_MODE sont réglées à 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 tombe en dessous de certains seuils, le moniteur d'état é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.

Le moniteur d'état enregistre les informations concernant la version de MySQL, l'utilisation globale de la mémoire et divers paramètres de configuration dans le journal des erreurs. Les informations sont enregistrées sous forme de valeurs séparées par des virgules pour faciliter leur transfert dans une feuille de calcul aux fins d'analyse.

Consultation des tables du moniteur d'état

Les tables du moniteur d'état stockent les données et les statistiques de surveillance dans le schéma de performance de MySQL Server.

Les tables d'état contiennent des informations sur le stockage sur disque, des informations sur la mémoire système et des informations sur la mémoire de processus.

Les tables de statistiques contiennent des statistiques sur l'utilisation de l'UC système, l'utilisation du disque, l'utilisation de la mémoire et le processus serveur MySQL (mysqld). Chaque table de statistiques comporte deux versions, une version à la demande, qui est alimentée avec les lectures courantes lorsque vous l'interrogez, et une version d'historique pour laquelle le moniteur d'état 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 l'interpréteur de commandes MySQL pour voir les tables du moniteur d'état.

Cette tâche nécessite les éléments suivants :
  1. Pour l'interpréteur de commandes MySQL, passez en mode SQL en entrant la commande \sql.
  2. Entrez l'instruction SQL suivante, en spécifiant 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;
    Note

    Pour voir la liste complète des tables, vous pouvez spécifier dans <health_monitor_table>, voir Tables du moniteur d'état.
Vous obtenez une réponse similaire à la suivante, qui affiche les informations sur l'é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 du moniteur d'état pour voir les informations relatives au stockage sur disque, à la mémoire système et à la mémoire de processus.

La liste complète des tables du moniteur d'état est la suivante :

Table performance_schema.health_block_device

Le moniteur d'état utilise la table performance_schema.health_block_device du schéma de performance de MySQL Server pour stocker des données sur l'espace disque utilisé et disponible dans un système de base de données.

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

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

Le moniteur d'état utilise la table performance_schema.health_system_memory du schéma de performance 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 health_system_memory Table de schéma de performance

Colonne Description
TIMESTAMP Heure à laquelle l'échantillon de données de cette rangée 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 permutation, en octets.
USE_PERCENT Pourcentage de mémoire utilisée.
MEMORY_FREE Quantité de mémoire inutilisée.
MEMORY_FS_CACHE Mémoire cache de la page du système de fichiers.
SWAP_TOTAL Quantité totale de mémoire de permutation.
SWAP_FREE Quantité totale de mémoire de permutation libre.
Table performance_schema.health_process_memory

Le moniteur d'état utilise la table performance_schema.health_process_memory du schéma de performance 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 health_process_memory Table de schéma de performance

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

Le moniteur d'état collecte des statistiques sur l'utilisation d'UC par le système de base de données. Les statistiques sont disponibles dans deux tables du schéma de performance 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 performance de MySQL Server est alimentée avec un échantillon de données lorsque vous l'interrogez. La table performance_schema.system_cpu_stats_history stocke régulièrement des échantillons de données.

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

Tableau 17-4 : Tables system_cpu_stats et system_cpu_stats_history de schéma de performance

Colonne Description
TIMESTAMP Heure à laquelle l'échantillon de données de cette rangée a été collecté.
CPU La rangée d'UC affiche les données agrégées d'utilisation d'UC, et chaque rangée numérotée (par exemple, cpu0, cpu1) affiche les données d'un processus individuel. Tous les temps 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 passé à entretenir les interruptions matérielles.
SOFTIRQ_MS Le temps passé à entretenir le logiciel 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 unité centrale virtuelle avec une priorité normale.
GUEST_NICE_MS Temps passé à exécuter une unité centrale virtuelle avec une priorité faible.
Table performance_schema.system_disk_stats

Le moniteur d'état 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 performance 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 performance de MySQL Server est alimentée avec un échantillon de données lorsque vous l'interrogez. La table performance_schema.system_disk_stats_history stocke régulièrement des échantillons de données.

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

Tableau 17-5 : Tables system_disk_stats et system_disk_stats_history de schéma de performance

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

Le moniteur d'état 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 performance 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 performance de MySQL Server est alimentée avec un échantillon de données lorsque vous l'interrogez. La table performance_schema.system_memory_stats_history stocke régulièrement des échantillons de données.

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

Tableau 17-6 : Tables system_memory_stats et system_memory_stats_history de schéma de performance

Colonne Description
TIMESTAMP Heure à laquelle l'échantillon de données de cette rangée 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 disponible estimée 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 pages).
SLAB_BYTES Quantité de mémoire utilisée pour mettre en mémoire 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 permutation qui n'est pas utilisée actuellement.
SWAP_USED_BYTES Quantité totale de mémoire qui a été remplacée par la mémoire vive et qui se trouve temporairement sur le disque.
SWAP_IN Quantité de mémoire permutée en mémoire vive à partir du disque, en Ko par seconde.
SWAP_OUT Quantité de mémoire permutée sur le disque à partir de la mémoire vive, en Ko par seconde.
Table performance_schema.system_process_stats

Le moniteur d'état collecte des statistiques pour chaque unité d'exécution utilisée 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 performance 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 performance de MySQL Server est alimentée avec un échantillon de données lorsque vous l'interrogez. La table performance_schema.system_process_stats_history stocke régulièrement des échantillons de données.

Pour les statistiques de processus, la table à la demande retourne une rangée pour chaque unité d'exécution utilisée par le processus mysqld. Toutefois, la table d'historique stocke une seule rangée pour chaque échantillon, avec les totaux agrégés pour tous les fils 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 system_process_stats et system_process_stats_history de schéma de performance

Colonne Description
TIMESTAMP Heure à laquelle l'échantillon de données de cette rangée a été collecté.
PID Code de traitement.
PROCESS_NAME Nom du processus, qui est mysqld.
TID ID fil pour le fil individuel indiqué dans cette rangée.
THREAD_NAME Nom du fil instrumenté pour le fil individuel affiché dans cette rangée.
STATE Caractère indiquant l'état de l'unité d'exécution au moment de l'échantillon : exécution (R), mise en veille en attente interrompue (S), attente d'un arrêt ininterrompu du disque (D), unité d'exécution zombie (Z), arrêt d'un signal ou d'une trace (T), pagination (W), mort (X), wakekill (K), veille (W) ou garé (P).
UTIME_MS Temps passé par ce fil en mode utilisateur, en millisecondes.
STIME_MS Temps passé par ce fil en mode noyau, en millisecondes.
CUTIME_MS Temps passé par les processus enfants de ce processus en mode utilisateur, en millisecondes.
CSTIME_MS Temps passé par les processus enfants de ce processus en mode noyau, en millisecondes.
NUM_THREADS Nom des threads dans ce processus.
VSIZE_BYTES Taille de la mémoire virtuelle en octets.
RSS_BYTES Nombre d'octets que le processus a en mémoire réelle (taille du jeu résident).
RSSLIM_BYTES Limite en octets de la taille définie par le résident du processus.
PROCESSOR Numéro d'UC sur lequel l'unité d'exécution a été exécutée pour la dernière fois.
DELAYACCT_BLKIO_MS Les délais d'E/S de bloc agrégés, en millisecondes.
GUEST_TIME_MS Heure du client pour le processus, en millisecondes.
CGUEST_TIME_MS Temps invité pour les processus enfants du processus, en millisecondes.
READ_BYTES Nombre d'octets extraits par ce processus à partir de la couche de stockage.
WRITE_BYTES Nombre d'octets envoyés par ce processus à la couche de stockage.

Consultation des variables du moniteur d'état

Les variables du moniteur d'état sont des paramètres de configuration pour 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 l'interpréteur de commandes MySQL pour voir les variables du moniteur d'état et leurs valeurs.

Cette tâche nécessite les éléments suivants :
Pour afficher les variables du moniteur d'état, procédez comme suit :
  1. Pour l'interpréteur de commandes 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 similaire à 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 du moniteur d'état

Toutes les variables de système du moniteur d'état portent le préfixe 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.

Note

Le préfixe health_monitor. est omis du tableau ci-dessous. Par exemple, disk_fallback_enable est en fait health_monitor.disk_fallback_enable.

Tableau 17-8 Variables du système du moniteur d'état

Variable de système Valeur par défaut Description
disk_fallback_enable ON En cas de pénurie importante ou soutenue d'espace disque, le moniteur d'état règle la variable de système SUPER_READ_ONLY et OFFLINE_MODE à ON dans MySQL Server.
disk_fallback_force OFF Mettez fin aux interrogations en avant-plan qui contiennent des verrous de métadonnées globales et réessayez en définissant SUPER_READ_ONLY.
disk_low_space_critical_level 2,000 Seuil d'espace disque faible critique dans MiB. Si l'espace disque disponible tombe en dessous de cette valeur pendant une durée quelconque, le moniteur d'état 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 en dessous de disk_low_space_level ou de disk_low_space_percent (selon la valeur la plus basse) avant que le moniteur d'état 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 reste inférieur à ce pourcentage du stockage disponible total pendant une durée supérieure à la valeur de disk_low_space_duration, le moniteur d'état 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 reste inférieur à ce pourcentage du stockage disponible total pendant une durée supérieure à la valeur de disk_low_space_duration, le moniteur d'état définit les modes SUPER_READ_ONLY et OFFLINE_MODE sur MySQL Server.
disk_monitored /db Point de montage pour les 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 échantillon étant supprimé toutes les 60 secondes.

disk_recovery_enable ON Réglez la variable à ON pour activer la récupération suite à une pénurie soutenue ou importante et à OFF pour désactiver la récupération suite à une pénurie soutenue 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, le moniteur d'é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, le moniteur d'é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 le moniteur d'état définisse OFFLINE_MODE = OFF.
disk_recovery_time_2 300 secondes Temps 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 le moniteur d'état 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 dans la période disk_recovery_cycle_window.
disk_recovery_window 86400 secondes Temps (en secondes) écoulé après le dernier cycle de récupération réussie après lequel 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 temporisateurs de récupération disk_recovery_time_1 et disk_recovery_time_2 pour chaque cycle de récupération.
disk_running ON État d'activité du moniteur d'état.
disk_sample_rate 60 Fréquence de la collecte des données sur 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 maximum est de 86400 (une fois par jour).
disk_usage_warning_level_1 20 Pourcentage d'espace disque disponible supérieur au paramètre disk_low_space_level défini. Si l'espace disque disponible passe en dessous de ce niveau, l'avertissement WARNING_DISK_USAGE_LEVEL_1 est généré.
disk_usage_warning_level_2 10 Pourcentage d'espace disque disponible, supérieur au paramètre disk_low_space_level défini. Si l'espace disque disponible passe en dessous de ce niveau, l'avertissement WARNING_DISK_USAGE_LEVEL_2 est généré.
disk_usage_warning_level_3 5 Pourcentage d'espace disque disponible, supérieur au paramètre disk_low_space_level défini. Si l'espace disque disponible passe en dessous de ce niveau, l'avertissement WARNING_DISK_USAGE_LEVEL_3 est généré.
memory_reporting ON Active la production de rapports 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 État d'activité du moniteur de mémoire du moniteur d'état.
memory_sample_rate 60 Fréquence de la 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 maximum 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 passe en dessous de ce niveau, l'avertissement WARNING_MEMORY_USAGE_LEVEL_1 est généré.
memory_usage_warning_level_2 500 Quantité de mémoire disponible (MiB). re disponible passe en dessous de ce niveau, l'avertissement WARNING_MEMORY_USAGE_LEVEL_2 est généré.
memory_usage_warning_level_3 100 Quantité de mémoire disponible (MiB). re disponible passe en dessous de ce niveau, l'avertissement WARNING_MEMORY_USAGE_LEVEL_3 est généré.
status_interval 10 Fréquence (en multiples de disk_sample_rate) d'envoi des messages de statut à la table du journal des erreurs. Par exemple, si status_interval = 10 et disk_sample_rate = 60 secondes, le moniteur d'état envoie un message de statut à la table du journal 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 performance system_cpu_stats_history. Si ces statistiques ne sont pas stockées, vous pouvez toujours accéder à un instantané sur 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 performance system_memory_stats_history. Si ces statistiques ne sont pas stockées, vous pouvez toujours accéder à un instantané sur 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 performance system_disk_stats_history. Si ces statistiques ne sont pas stockées, vous pouvez toujours accéder à un instantané sur demande en interrogeant la table system_disk_stats.
system_process_stats_history ON Indique si les statistiques du processus serveur MySQL (mysqld) sont collectées et stockées dans la table de schéma de performance system_process_stats_history. Si ces statistiques ne sont pas stockées, vous pouvez toujours accéder à un instantané sur 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 traitement.

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 réglée à ON, les tables de statistiques pour l'utilisation de l'UC système, l'utilisation du disque, l'utilisation de la mémoire et le processus serveur MySQL (mysqld) sont disponibles, et les tables d'historique correspondantes sont alimentées si leurs variables de système sont réglées à ON.
system_sample_rate 60 Fréquence de la 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 maximum est de 86400 (une fois par jour).

Messages du moniteur d'état

Les erreurs, les avertissements et les mises à jour de statut du moniteur d'état sont enregistrés dans performance_schema.error_log. Le moniteur d'état abrége TiB en T, GiB en G et MiB en M dans le journal des erreurs. Par exemple, 306.6G = 306,6 GiB = 329,2 Go.

Tableau 17-9 Messages du moniteur d'état

Type de message Description
Mise à jour du statut Le moniteur d'état émet une mise à jour de statut de sous-programme en fonction du nombre de secondes défini par sample_rate * status_interval. Par exemple :
[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 de seuil Si la quantité d'espace disponible est inférieure à l'un des seuils définis par disk_usage_warning_level_*, le moniteur d'état émet un avertissement. L'exemple suivant présente l'avertissement pour disk_usage_warning_level_2, défini comme 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 disk_low_space_duration Si l'espace disque disponible tombe en dessous de la limite d'espace faible de 18 GiB, le moniteur d'état démarre le temporisateur de secours et émet un avertissement. Par exemple :
[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 faible pendant plus de disk_low_space_duration secondes, le moniteur d'état place le serveur dans SUPER_READ_ONLY et OFFLINE_MODE. Par exemple :
[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
Voir Résolution du problème SUPER_READ_ONLY et OFFLINE_MODE causé par un espace de stockage disponible faible.
Avertissement critique Si l'espace disque disponible reste inférieur à disk_low_space_critical_level pendant une durée quelconque, le moniteur d'état place le serveur en mode SUPER_READ_ONLY. Par exemple :
[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 du temporisateur Si l'espace disponible passe au-dessus de la limite inférieure avant que le délai de disk_low_space_duration secondes soit écoulé, le temporisateur du mode de secours est annulé et le moniteur d'état émet un message de statut ou d'avertissement, si l'espace disponible se trouve toujours dans un intervalle d'avertissement. Par exemple :
[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 sur la mémoire Si la mémoire disponible tombe en dessous de l'un des seuils définis par memory_usage_warning_level_*, le moniteur d'état émet un avertissement qui inclut les détails des diagnostics de 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>...