Health Monitor

Health Monitor raccoglie le statistiche relative all'uso della CPU del sistema, all'uso del disco, all'uso della memoria e al processo del server MySQL (mysqld). Le statistiche vengono registrate nelle tabelle della cronologia, per le quali Health Monitor preleva i campioni una volta al minuto e conserva i dati di un giorno. È inoltre possibile accedere a queste statistiche in tabelle popolate con letture correnti su richiesta quando si esegue una query.

Panoramica di Health Monitor

Health Monitor analizza informazioni sullo spazio su disco, informazioni sulla memoria di sistema ed elabora le informazioni sulla memoria ogni sessanta secondi e memorizza i dati di un giorno in tabelle nello schema delle prestazioni di MySQL Server. Se lo spazio su disco disponibile o la memoria disponibile è inferiore a determinate soglie preimpostate, Health Monitor emette avvisi e lo registra nella tabella performance_schema.error_log.

Health Monitor utilizza unità di storage MiB/GiB/TiB dove 100 GB = 93 GiB.

Lo storage totale disponibile per un sistema DB contiene gli elementi riportati di seguito.

  • Storage disponibile: lo spazio su disco dopo la riserva di storage viene escluso dallo storage totale.
  • Storage reserve: spazio su disco inferiore alle variabili di configurazione disk_low_space_level e disk_low_space_percent. Il valore predefinito di disk_low_space_level è 5.000 MiB e il valore predefinito di disk_low_space_percent è il 4% dello storage totale.
  • Storage critico: lo spazio su disco nella memoria viene riservato al di sotto della soglia critica, definita dalla variabile di configurazione disk_low_space_critical_level. Si tratta dello spazio su disco minimo utilizzabile dal sistema per evitare l'esaurimento del disco. Lo spazio di memorizzazione critico predefinito è 2.000 MiB.

Avvertenze spazio su disco

Quando lo spazio su disco è inferiore a una determinata percentuale dello storage disponibile, Health Monitor emette le seguenti avvertenze e le registra nella tabella performance_schema.error_log:

  • WARNING_DISK_USAGE_LEVEL_1: quando lo spazio su disco è inferiore al 20% dello spazio di memorizzazione disponibile.
  • WARNING_DISK_USAGE_LEVEL_2: quando lo spazio su disco è inferiore al 10% dello spazio di memorizzazione disponibile.
  • WARNING_DISK_USAGE_LEVEL_3: quando lo spazio su disco è inferiore al 5% dello storage disponibile.

Ad esempio, se lo storage totale è 100.000 MiB e la riserva di storage è minore delle due variabili di configurazione riportate di seguito.

  • disk_low_space_level: il valore predefinito è 5.000 MiB.
  • disk_low_space_percent: rappresenta il 4% dello storage totale, ovvero il 4% di 100.000 MiB = 4.000 MiB.

La riserva di memorizzazione è 4.000 MiB, che è inferiore alle due variabili di configurazione.

È possibile trovare lo stoccaggio disponibile escludendo la riserva di stoccaggio dal deposito totale:

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

Health Monitor genera le seguenti avvertenze:

  • WARNING_DISK_USAGE_LEVEL_1: quando lo spazio su disco è inferiore al 20% dello spazio di memorizzazione disponibile, ovvero 20/100*96.000 = 19.200 MiB.
  • WARNING_DISK_USAGE_LEVEL_2: quando lo spazio su disco è inferiore al 10% dello storage disponibile, ovvero 10/100*96.000 = 9.600 MiB.
  • WARNING_DISK_USAGE_LEVEL_3: quando lo spazio su disco è inferiore al 5% dello storage disponibile, ovvero 5/100*96.000 = 4.800 MiB.

Carenza significativa o prolungata di spazio su disco

Health Monitor definisce una carenza significativa o prolungata di spazio su disco quando vengono soddisfatte le seguenti condizioni:

  • Carenza significativa: lo spazio su disco scende al di sotto della soglia critica definita da disk_low_space_critical_level.
  • Carenza sostenuta: lo spazio su disco scende al di sotto della riserva di storage, quindi rimane nella riserva di storage per la durata definita dalla variabile di configurazione disk_low_space_duration.

In caso di carenza significativa o prolungata di spazio su disco, Health Monitor esegue le operazioni riportate di seguito.

  • SUPER_READ_ONLY=ON: imposta le variabili di sistema, SUPER_READ_ONLY, su ON in MySQL Server. MySQL Server rifiuta tutte le nuove istruzioni di scrittura SQL in entrata (UPDATE, INSERT, DELETE e DDL), indipendentemente dagli utenti e dai privilegi. Il completamento delle transazioni in esecuzione è consentito, ma le nuove scritture sono vietate fino a quando lo spazio su disco non sarà nuovamente disponibile. Non è possibile caricare i dati nel cluster HeatWave quando il server è in modalità SUPER_READ_ONLY.

    In alcuni casi, i lock di lettura globali, i commit in corso o i lock dei metadati impediscono a Health Monitor di impostare la variabile di sistema SUPER_READ_ONLY. In questi casi, se si imposta la variabile health_monitor.disk_fallback_force, Health Monitor identifica e termina le query attive che contengono blocchi globali per impostare la variabile di sistema SUPER_READ_ONLY.

  • OFFLINE_MODE=ON: imposta la variabile di sistema, OFFLINE_MODE, su ON in MySQL Server. MySQL Server disconnette gli utenti client che non dispongono del privilegio CONNECTION_ADMIN, arresta le istruzioni in esecuzione e rilascia i blocchi e blocca le nuove connessioni con un errore appropriato.
  • super_read_only_disk_full=ON: imposta la variabile di stato, super_read_only_disk_full, su ON per indicare che la modalità di sola lettura è stata attivata a causa dello spazio su disco ridotto. È possibile vedere il valore della variabile di stato super_read_only_disk_full con uno dei comandi seguenti:
    • 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';

Le variabili di sistema cambiano il comportamento di MySQL Server, mentre le variabili di stato sono indicatori statici dello stato di MySQL Server.

Ripristino al funzionamento normale

Una volta impostati i valori SUPER_READ_ONLY e OFFLINE_MODE, Health Monitor esegue le operazioni riportate di seguito.

  • Controllare lo spazio su disco ogni minuto .
  • Impostare OFFLINE_MODE=OFF se lo spazio su disco disponibile viene recuperato e rimane sopra disk_recovery_level per disk_recovery_time_1 secondi o più.
  • Impostare SUPER_READ_ONLY=OFF se lo spazio su disco disponibile viene recuperato e rimane sopra disk_recovery_level per altri disk_recovery_time_2 secondi o più.

Le operazioni normali vengono riprese una volta che lo spazio su disco rimane superiore a disk_recovery_level per disk_recovery_time_1 + disk_recovery_time_2 secondi.

Una volta recuperato lo spazio su disco, Health Monitor cancella le variabili di sistema, SUPER_READ_ONLY e OFFLINE_MODE e la variabile di stato, super_read_only_disk_full. Non è necessario riavviare l'istanza MySQL per cancellare le variabili.

Se si verifica di nuovo una carenza significativa o prolungata di spazio su disco, Health Monitor imposta di nuovo le variabili di sistema SUPER_READ_ONLY e OFFLINE_MODE e la variabile di stato super_read_only_disk_full su ON in MySQL Server.

Prima di riportare un'istanza primaria di un sistema DB High Availability alla modalità operativa normale, Health Monitor verifica che il server sia online con la maggioranza dei gruppi. Health Monitor non imposta mai SUPER_READ_ONLY o OFFLINE_MODE sulle istanze secondarie.

Incremento recupero, ciclo massimo recupero e finestra di recupero

Ogni volta che MySQL Server recupera da una significativa o prolungata carenza di spazio su disco, Health Monitor aumenta il tempo di recupero del disco di disk_recovery_increment secondi.

Ad esempio, se disk_recovery_time_1 = 300 secondi e disk_recovery_time_2 = 600 secondi e disk_recovery_increment = 400 secondi, il tempo di recupero del disco per ogni ciclo è il seguente:

  • Ciclo 1: disk_recovery_time_1 = 300 secondi, disk_recovery_time_2 = 600 secondi
  • Ciclo 2: disk_recovery_time_1 = (300 + 400) secondi, disk_recovery_time_2 = (600 + 400) secondi
  • Ciclo 3: disk_recovery_time_1 = (300+400+400) secondi, disk_recovery_time_2 = (600+400+400) secondi

Health Monitor ripristina alla modalità operativa normale un massimo di disk_recovery_max_cycles volte entro una finestra fissa di disk_recovery_window secondi, dall'ultimo ciclo di recupero. Ad esempio, se disk_recovery_max_cycles è impostato su 5 e disk_recovery_window è impostato su 86.400 secondi (1 giorno), Health Monitor può ripristinare la normale modalità operativa cinque volte in una finestra di 86.400 secondi. Se si verifica una carenza significativa o prolungata la sesta volta nella stessa finestra, le variabili di sistema SUPER_READ_ONLY e OFFLINE_MODE vengono impostate su ON.

Il conteggio di recupero viene reimpostato dopo disk_recovery_window secondi dall'ultimo recupero.

Avvertenze memoria

Quando la memoria disponibile è inferiore a determinate soglie, Health Monitor genera le seguenti avvertenze:

  • WARNING_MEMORY_USAGE_LEVEL_1: se la memoria disponibile è inferiore a 1024, MiB.
  • WARNING_MEMORY_USAGE_LEVEL_2: quando la memoria disponibile è inferiore a 500 MiB.
  • WARNING_MEMORY_USAGE_LEVEL_3: quando la memoria disponibile è inferiore a 100 MiB.

Health Monitor registra le informazioni relative alla versione MySQL, all'uso della memoria globale e a varie impostazioni di configurazione nel log degli errori. Le informazioni vengono registrate come valori separati da virgole per un facile trasferimento in un foglio di calcolo per ulteriori analisi.

Visualizzazione delle tabelle di monitoraggio dello stato

Le tabelle Health Monitor memorizzano i dati e le statistiche di monitoraggio nello schema delle prestazioni di MySQL Server.

Le tabelle di integrità contengono informazioni sull'archiviazione su disco, sulla memoria di sistema e sulla memoria di processo.

Le tabelle statistiche contengono statistiche sull'uso della CPU del sistema, sull'uso del disco, sull'uso della memoria e sul processo del server MySQL (mysqld). Ogni tabella delle statistiche ha due versioni, una versione su richiesta, che viene popolata con letture correnti quando si esegue la query e una versione della cronologia per la quale Health Monitor preleva campioni una volta al minuto e conserva un valore giornaliero di dati. Entrambe le versioni della tabella hanno le stesse colonne.

Uso di un client dalla riga di comando

Utilizzare un client della riga di comando, ad esempio il client MySQL o la shell MySQL, per visualizzare le tabelle di Health Monitor.

Questa attività richiede quanto segue:
  1. Per la shell MySQL, passare alla modalità SQL immettendo il comando \sql.
  2. Immettere l'istruzione SQL seguente, specificando la tabella che si desidera visualizzare:
    SELECT * FROM performance_schema.<health_monitor_table>;

    Ad esempio, per visualizzare lo stato di storage su disco, utilizzare il seguente comando SQL:

    SELECT * FROM performance_schema.health_block_device;
    Nota

    Per visualizzare l'elenco completo delle tabelle, è possibile specificare in <health_monitor_table>, vedere Tabelle di monitoraggio dello stato.
Si ottiene una risposta simile alla seguente, che mostra le informazioni sullo stato di archiviazione del disco:

+-------------------------+---------------------+-------------+-----------------+-------------+-------------+
| 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         |

Tabelle Health Monitor

Fare riferimento alle tabelle Health Monitor per visualizzare le informazioni sull'archiviazione su disco, le informazioni sulla memoria di sistema e le informazioni sulla memoria di processo.

L'elenco completo delle tabelle Health Monitor è il seguente:

Tabella performance_schema.health_block_device

Health Monitor utilizza la tabella performance_schema.health_block_device nello schema delle prestazioni di MySQL Server per memorizzare i dati sullo spazio su disco utilizzato e disponibile in un sistema DB.

Tabella 17-1 Tabella dello schema delle prestazioni health_block_device

Colonna descrizione;
DEVICE Nome di dispositivo del disco.
TIMESTAMP Ora di raccolta del campione di dati in questa riga.
TOTAL_BYTES La quantità totale di storage sul dispositivo, in byte.
AVAILABLE_BYTES Quantità di storage disponibile sul dispositivo, in byte.
USE_PERCENT Percentuale di spazio su disco in uso.
MOUNT_POINT Il mount point del dispositivo.
Tabella performance_schema.health_system_memory

Health Monitor utilizza la tabella performance_schema.health_system_memory nello schema delle prestazioni di MySQL Server per memorizzare i dati sull'uso della memoria da parte del sistema DB

Tabella 17-2 Tabella dello schema delle prestazioni health_system_memory

Colonna descrizione;
TIMESTAMP Ora di raccolta del campione di dati in questa riga.
TOTAL_MEMORY La quantità totale di memoria per il sistema, in byte.
AVAILABLE La memoria disponibile per l'avvio di nuove applicazioni senza swap, in byte.
USE_PERCENT Percentuale di memoria in uso.
MEMORY_FREE Quantità di memoria inutilizzata.
MEMORY_FS_CACHE Cache delle pagine del file system.
SWAP_TOTAL La quantità totale della memoria di swap.
SWAP_FREE Quantità totale della memoria di swap libera.
Tabella performance_schema.health_process_memory

Health Monitor utilizza la tabella performance_schema.health_process_memory nello schema delle prestazioni di MySQL Server per memorizzare i dati sull'uso della memoria da parte del processo MySQL Server (mysqld) nel sistema DB.

Tabella 17-3 Tabella dello schema delle prestazioni health_process_memory

Colonna descrizione;
TIMESTAMP Ora di raccolta del campione di dati in questa riga.
PROCESS_NAME Il nome del processo MySQL Server.
PID Identificativo di sistema per il processo MySQL Server.
VM_RSS La dimensione del set residente del processo del server MySQL, in byte.
VM_DATA La dimensione del segmento dati del processo MySQL Server, in byte.
VM_SWAP La dimensione del segmento di swap del processo del server MySQL, in byte.
PAGE_FAULTS Numero di errori di pagina che richiedono l'I/O del disco.
Tabella performance_schema.system_cpu_stats

Health Monitor raccoglie le statistiche sull'uso della CPU da parte del sistema DB. Le statistiche sono disponibili in due tabelle nello schema delle prestazioni di MySQL Server, in una tabella su richiesta e in una tabella della cronologia corrispondente. Entrambe le tabelle hanno le stesse colonne.

La tabella performance_schema.system_cpu_stats nello schema delle prestazioni di MySQL Server viene popolata con un esempio di dati quando si esegue una query. La tabella performance_schema.system_cpu_stats_history memorizza regolarmente i campioni di dati.

Le statistiche in queste tabelle provengono dal file di sistema Linux /proc/stat.

Tabella 17-4 Tabelle dello schema delle prestazioni system_cpu_stats e system_cpu_stats_history

Colonna descrizione;
TIMESTAMP Ora di raccolta del campione di dati in questa riga.
CPU La riga della CPU mostra i dati di utilizzo aggregati della CPU e ogni riga numerata (ad esempio, cpu0, cpu1) mostra i dati per un singolo processo. Tutti gli orari sono in millisecondi.
USER_MS Tempo impiegato in modalità utente.
NICE_MS Tempo trascorso in modalità utente con priorità bassa.
SYSTEM_MS Tempo impiegato in modalità sistema.
IDLE_MS Il tempo impiegato nel task inattivo.
IOWAIT_MS Tempo impiegato per il completamento dell'operazione di I/O.
IRQ_MS Il tempo impiegato per la manutenzione dell'hardware interrompe.
SOFTIRQ_MS Il tempo impiegato per la manutenzione del software interrompe.
STEAL_MS Tempo impiegato per l'esecuzione di altri sistemi operativi in un ambiente virtualizzato.
GUEST_MS Tempo impiegato per eseguire una CPU virtuale con priorità normale.
GUEST_NICE_MS Tempo impiegato per eseguire una CPU virtuale con priorità bassa.
Tabella performance_schema.system_disk_stats

Health Monitor raccoglie le statistiche sull'uso del disco da parte del sistema DB. Le statistiche sono disponibili in due tabelle nello schema delle prestazioni di MySQL Server, in una tabella su richiesta e in una tabella della cronologia corrispondente. Entrambe le tabelle hanno le stesse colonne.

La tabella performance_schema.system_disk_stats nello schema delle prestazioni di MySQL Server viene popolata con un esempio di dati quando si esegue una query. La tabella performance_schema.system_disk_stats_history memorizza regolarmente i campioni di dati.

Le statistiche in queste tabelle provengono dal file di sistema Linux /proc/diskstats.

Tabella 17-5 Tabelle dello schema delle prestazioni system_disk_stats e system_disk_stats_history

Colonna descrizione;
TIMESTAMP Ora di raccolta del campione di dati in questa riga.
DEVICE Il nome del dispositivo per questo disco.
READS Numero di letture completate.
READ_BYTES Il numero di byte letti.
READ_TIME_MS Tempo di lettura, in millisecondi.
WRITES Numero di scritture completate.
WRITE_BYTES Il numero di byte scritti.
WRITE_TIME_MS Il tempo trascorso a scrivere, in millisecondi.
FLUSHES Il numero di richieste di svuotamento è stato completato correttamente.
FLUSH_TIME_MS Tempo di svuotamento, in millisecondi.
Tabella performance_schema.system_memory_stats

Health Monitor raccoglie le statistiche sull'uso della memoria da parte del sistema DB. Le statistiche sono disponibili in due tabelle nello schema delle prestazioni di MySQL Server, in una tabella su richiesta e in una tabella della cronologia corrispondente. Entrambe le tabelle hanno le stesse colonne.

La tabella performance_schema.system_memory_stats nello schema delle prestazioni di MySQL Server viene popolata con un esempio di dati quando si esegue una query. La tabella performance_schema.system_memory_stats_history memorizza regolarmente i campioni di dati.

Le statistiche in queste tabelle provengono dal file di sistema Linux /proc/meminfo.

Tabella 17-6 Tabelle dello schema delle prestazioni system_memory_stats e system_memory_stats_history

Colonna descrizione;
TIMESTAMP Ora di raccolta del campione di dati in questa riga.
TOTAL_BYTES La memoria di sistema utilizzabile totale, in byte.
FREE_BYTES La memoria inutilizzata.
USED_BYTES La memoria totale utilizzata.
AVAILABLE_BYTES La memoria stimata disponibile per l'avvio di nuove applicazioni, in byte.
BUFFER_BYTES Quantità di memoria utilizzata per la memorizzazione temporanea per i blocchi del disco raw.
CACHED_BYTES La quantità di memoria utilizzata per inserire nella cache i file letti dal disco (cache delle pagine).
SLAB_BYTES Quantità di memoria utilizzata per inserire nella cache le strutture di dati nel kernel.
SWAP_TOTAL_BYTES Quantità totale dello spazio di swap disponibile sul disco.
SWAP_FREE_BYTES La quantità totale di spazio di swap attualmente non utilizzato.
SWAP_USED_BYTES Quantità totale di memoria scambiata dalla RAM e temporaneamente su disco.
SWAP_IN La quantità di memoria scambiata nella RAM dal disco, in KB al secondo.
SWAP_OUT La quantità di memoria scambiata su disco dalla RAM, in KB al secondo.
Tabella performance_schema.system_process_stats

Health Monitor raccoglie le statistiche per ogni thread utilizzato dal processo MySQL Server nel sistema DB. Le statistiche sono disponibili in due tabelle nello schema delle prestazioni di MySQL Server, in una tabella su richiesta e in una tabella della cronologia corrispondente. Entrambe le tabelle hanno le stesse colonne.

La tabella performance_schema.system_process_stats nello schema delle prestazioni di MySQL Server viene popolata con un esempio di dati quando si esegue una query. La tabella performance_schema.system_process_stats_history memorizza regolarmente i campioni di dati.

Per le statistiche dei processi, la tabella su richiesta restituisce una riga per ogni thread utilizzato dal processo mysqld. Tuttavia, la tabella della cronologia memorizza una singola riga per ogni campione, con i totali aggregati per tutti i thread utilizzati dal processo mysqld.

Le statistiche in queste tabelle provengono dal file di sistema Linux /proc/self/task/[pid]/stat.

Tabella 17-7 Tabelle dello schema delle prestazioni system_process_stats e system_process_stats_history

Colonna descrizione;
TIMESTAMP Ora di raccolta del campione di dati in questa riga.
PID L'ID del processo.
PROCESS_NAME Il nome del processo, ovvero mysqld.
TID ID thread per il singolo thread visualizzato in questa riga.
THREAD_NAME Nome del thread con strumentazione per il singolo thread visualizzato in questa riga.
STATE Carattere che mostra lo stato del thread al momento dell'esempio: esecuzione (R), sospensione in un'attesa interrompibile (S), attesa in una sospensione del disco non interrompibile (D), thread zombie (Z), arresto su un segnale o traccia interrotta (T), paging (W), dead (X), wakekill (K), waking (W) o parcheggiato (P).
UTIME_MS Tempo trascorso da questo thread in modalità utente, in millisecondi.
STIME_MS Tempo trascorso da questo thread in modalità kernel, in millisecondi.
CUTIME_MS Tempo impiegato dai processi figlio di questo processo in modalità utente, in millisecondi.
CSTIME_MS Tempo trascorso dai processi figlio di questo processo in modalità kernel, in millisecondi.
NUM_THREADS Il monarca dei fili in questo processo.
VSIZE_BYTES La dimensione della memoria virtuale in byte.
RSS_BYTES Il numero di byte che il processo ha in memoria reale (la dimensione del set residente).
RSSLIM_BYTES Il limite in byte sulla dimensione del set residente del processo.
PROCESSOR Numero CPU su cui è stato eseguito l'ultima volta il thread.
DELAYACCT_BLKIO_MS Ritardi di I/O del blocco aggregato, in millisecondi.
GUEST_TIME_MS Tempo guest per il processo, in millisecondi.
CGUEST_TIME_MS Tempo guest per i processi figlio del processo, in millisecondi.
READ_BYTES Il numero di byte recuperati da questo processo dal livello di storage.
WRITE_BYTES Il numero di byte inviati da questo processo al livello di storage.

Visualizzazione delle variabili di monitoraggio dello stato

Le variabili Health Monitor sono impostazioni di configurazione per l'attività di monitoraggio nel sistema DB. Non è possibile modificare i valori di queste variabili.

Uso di un client dalla riga di comando

Utilizzare un client della riga di comando, ad esempio un client MySQL o una shell MySQL, per visualizzare le variabili Health Monitor e i relativi valori.

Questa attività richiede quanto segue:
  • Sistema DB in esecuzione.
  • Client della riga di comando, come il client MySQL o la shell MySQL, connesso al sistema DB. Vedere Connessione a un sistema DB.
Per visualizzare le variabili Health Monitor, effettuare le operazioni riportate di seguito.
  1. Per la shell MySQL, passare alla modalità SQL immettendo il comando \sql.
  2. Immettere l'istruzione SQL riportata di seguito.
    show variables like 'health_monitor%';
Viene visualizzata una risposta simile alla seguente:
+----------------------------------------------+-------+
| 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)

Variabili Health Monitor

Tutte le variabili di sistema Health Monitor sono precedute dal prefisso health_monitor. Non è possibile modificare i valori delle variabili dai relativi valori predefiniti in un sistema DB.

Nota

Il prefisso health_monitor. viene omesso dalla tabella riportata di seguito. Ad esempio, disk_fallback_enable è in realtà health_monitor.disk_fallback_enable.

Tabella 17-8 Variabili di sistema di Health Monitor

Variabile di sistema Valore predefinito descrizione;
disk_fallback_enable ON Se si verifica una carenza significativa o prolungata di spazio su disco, Health Monitor imposta la variabile di sistema SUPER_READ_ONLY e OFFLINE_MODE su ON in MySQL Server.
disk_fallback_force Non attivo Arrestare le query in primo piano che contengono blocchi di metadati globali e riprovare impostando SUPER_READ_ONLY.
disk_low_space_critical_level 2.000 Soglia minima critica di spazio su disco in MiB. Se lo spazio su disco disponibile è inferiore a questo valore per qualsiasi durata, Health Monitor imposta le modalità SUPER_READ_ONLY e OFFLINE_MODE su MySQL Server.
disk_low_space_duration 300 Durata (in secondi) per la quale lo spazio su disco disponibile può rimanere al di sotto di disk_low_space_level o disk_low_space_percent (a seconda di quale dei due valori è inferiore) prima che Health Monitor imposti le modalità SUPER_READ_ONLY e OFFLINE_MODE su MySQL Server.
disk_low_space_level 5.000 La soglia di spazio bassa per la riserva di storage, in MiB. Se lo spazio su disco disponibile scende al di sotto di questa percentuale dello storage totale disponibile per un periodo di tempo superiore al valore disk_low_space_duration, Health Monitor imposta le modalità SUPER_READ_ONLY e OFFLINE_MODE su MySQL Server.
disk_low_space_percent 4 La soglia minima di spazio per la riserva di stoccaggio, espressa in percentuale. Se lo spazio su disco disponibile scende al di sotto di questa percentuale dello storage totale disponibile per un periodo di tempo superiore al valore disk_low_space_duration, Health Monitor imposta le modalità SUPER_READ_ONLY e OFFLINE_MODE su MySQL Server.
disk_monitored /db Il punto di attivazione per le statistiche del disco.
disk_retention 86.400

Per quanti secondi viene conservato ogni campione di dati nelle tabelle della cronologia per i dati di utilizzo del disco.

Il valore minimo è 1 secondo, l'impostazione predefinita è 86400 secondi (1 giorno) e il valore massimo è 864000 secondi (10 giorni).

Se memory_sample_rate=60 e memory_retention=86400, vengono conservati 1440 campioni, con il campione meno recente eliminato ogni 60 secondi.

disk_recovery_enable ON Impostare la variabile su ON per abilitare il recupero da una carenza sostenuta o significativa e su OFF per disabilitare il recupero da una carenza sostenuta o significativa.
disk_recovery_level 5% Percentuale di spazio su disco totale superiore alla riserva di storage.
  • Se lo storage disponibile rimane al di sopra del livello disk_recovery_level per disk_recovery_time_1 secondi, Health Monitor imposta OFFLINE_MODE = OFF.
  • Se lo storage rimane al di sopra del livello disk_recovery_level per altri disk_recovery_time_2 secondi, Health Monitor imposta SUPER_READ_ONLY = OFF.
disk_recovery_time_1 300 secondi Il periodo di tempo, in secondi, durante il quale lo storage disponibile deve rimanere al di sopra di disk_recovery_level prima che Health Monitor imposti OFFLINE_MODE = OFF.
disk_recovery_time_2 300 secondi Il tempo aggiuntivo (in secondi) durante il quale lo storage disponibile deve rimanere sopra disk_recovery_level dopo disk_recovery_time_1 prima che Health Monitor imposti SUPER_READ_ONLY = OFF.
disk_recovery_max_cycles 3 cicli Il numero massimo di volte in cui il server MySQL può essere rimesso in modalità operativa normale nel periodo di tempo disk_recovery_cycle_window.
disk_recovery_window 86400 secondi Il periodo di tempo, in secondi, successivo all'ultimo ciclo di recupero riuscito dopo il quale viene reimpostato il conteggio di recupero. Il valore 0 indica che il conteggio di recupero non viene mai reimpostato.
disk_recovery_increment 300 secondi Tempo (in secondi) per aumentare i timer di recupero disk_recovery_time_1 e disk_recovery_time_2 per ogni ciclo di recupero.
disk_running ON Stato attivo del monitoraggio del disco di Health Monitor.
disk_sample_rate 60 Frequenza di raccolta dei dati del disco, in secondi. Per impostazione predefinita, i dati vengono raccolti ogni 60 secondi. La frequenza minima di campionamento è 1 (ogni secondo) e la massima è 86400 (una volta al giorno).
disk_usage_warning_level_1 20 Percentuale di spazio su disco disponibile al di sopra del valore disk_low_space_level definito. Se lo spazio su disco disponibile è inferiore a questo livello, viene generata l'avvertenza WARNING_DISK_USAGE_LEVEL_1.
disk_usage_warning_level_2 10 Percentuale di spazio su disco disponibile, al di sopra del valore disk_low_space_level definito. Se lo spazio su disco disponibile è inferiore a questo livello, viene generata l'avvertenza WARNING_DISK_USAGE_LEVEL_2.
disk_usage_warning_level_3 5 Percentuale di spazio su disco disponibile, al di sopra del valore disk_low_space_level definito. Se lo spazio su disco disponibile è inferiore a questo livello, viene generata l'avvertenza WARNING_DISK_USAGE_LEVEL_3.
memory_reporting ON Abilita il reporting dei dati di memoria.
memory_retention 86.400

Per quanti secondi viene conservato ogni campione di dati nelle tabelle della cronologia per i dati sull'uso della memoria.

Il valore minimo è 1 secondo, l'impostazione predefinita è 86400 secondi (1 giorno) e il valore massimo è 864000 secondi (10 giorni).

memory_running ON Stato attivo del monitoraggio della memoria di Health Monitor.
memory_sample_rate 60 Frequenza di raccolta dei dati di memoria, in secondi. Per impostazione predefinita, i dati vengono raccolti ogni 60 secondi. La frequenza minima di campionamento è 1 (ogni secondo) e la massima è 86400 (una volta al giorno).
memory_usage_warning_level_1 1.024 Quantità di memoria disponibile (MiB). Se la memoria disponibile scende al di sotto di questo livello, viene generata l'avvertenza WARNING_MEMORY_USAGE_LEVEL_1.
memory_usage_warning_level_2 500 Quantità di memoria disponibile (MiB). Se la memoria disponibile scende al di sotto di questo livello, viene generata l'avvertenza WARNING_MEMORY_USAGE_LEVEL_2.
memory_usage_warning_level_3 100 Quantità di memoria disponibile (MiB). Se la memoria disponibile scende al di sotto di questo livello, viene generata l'avvertenza WARNING_MEMORY_USAGE_LEVEL_3.
status_interval 10 La frequenza (in multipli di disk_sample_rate) di invio dei messaggi di stato alla tabella del log degli errori. Ad esempio, se status_interval = 10 e disk_sample_rate = 60 secondi, Health Monitor invia un messaggio di stato alla tabella del log degli errori ogni 600 secondi.
system_cpu_stats_history ON Indica se le statistiche di utilizzo della CPU di sistema vengono raccolte e memorizzate nella tabella Schema prestazioni system_cpu_stats_history. Se queste statistiche non vengono memorizzate, è comunque possibile accedere a uno snapshot su richiesta eseguendo una query sulla tabella system_cpu_stats.
system_disk_stats_history ON Indica se le statistiche di utilizzo del disco di sistema vengono raccolte e memorizzate nella tabella Schema prestazioni system_memory_stats_history. Se queste statistiche non vengono memorizzate, è comunque possibile accedere a uno snapshot su richiesta eseguendo una query sulla tabella system_memory_stats.
system_memory_stats_history ON Indica se le statistiche sull'uso della memoria di sistema vengono raccolte e memorizzate nella tabella Schema prestazioni system_disk_stats_history. Se queste statistiche non vengono memorizzate, è comunque possibile accedere a uno snapshot su richiesta eseguendo una query sulla tabella system_disk_stats.
system_process_stats_history ON Indica se le statistiche del processo server MySQL (mysqld) vengono raccolte e memorizzate nella tabella Schema prestazioni system_process_stats_history. Se queste statistiche non vengono memorizzate, è comunque possibile accedere a uno snapshot su richiesta eseguendo una query sulla tabella system_process_stats.
system_retention 86.400

Per quanti secondi viene conservato ogni campione di dati nelle tabelle della cronologia per le statistiche di sistema e di processo.

Il valore minimo è 1 secondo, l'impostazione predefinita è 86400 secondi (1 giorno) e il valore massimo è 864000 secondi (10 giorni).

system_running ON Indica se le statistiche di sistema vengono raccolte da Health Monitor. Quando questa opzione è impostata su ON, sono disponibili le tabelle statistiche relative all'uso della CPU di sistema, all'uso del disco, all'uso della memoria e al processo del server MySQL (mysqld) e le tabelle di cronologia corrispondenti vengono popolate se le relative variabili di sistema sono impostate su ON.
system_sample_rate 60 Frequenza di raccolta delle statistiche di sistema, in secondi. Per impostazione predefinita, i dati vengono raccolti ogni 60 secondi. La frequenza minima di campionamento è 1 (ogni secondo) e la massima è 86400 (una volta al giorno).

Messaggi Health Monitor

Gli errori, le avvertenze e gli aggiornamenti di stato di Health Monitor vengono registrati in performance_schema.error_log. Health Monitor abbrevia TiB come T, GiB come G e MiB come M nel log degli errori. Ad esempio, 306.6G = 306,6 GiB = 329,2 GB.

Tabella 17-9 Messaggi di Health Monitor

Tipo di messaggio descrizione;
Aggiornamento stato Health Monitor esegue un aggiornamento dello stato di routine in base al numero di secondi definito da sample_rate * status_interval. Ad esempio:
[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)
Soglia di avvertenza Se la quantità di spazio disponibile è inferiore a una delle soglie definite da disk_usage_warning_level_*, Health Monitor genera un'avvertenza. L'esempio seguente mostra l'avvertenza per disk_usage_warning_level_2, definita come il 4% dello spazio totale al di sopra del limite di spazio minimo:
[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
disk_low_space_duration Avvertenza Se lo spazio su disco disponibile scende al di sotto del limite di spazio minimo di 18 GiB, Health Monitor avvia il timer di fallback e genera un'avvertenza. Ad esempio:
[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
Avvertenza modalità OFFLINE/SUPER_READ_ONLY Se lo spazio su disco disponibile rimane inferiore al limite di spazio minimo per più di disk_low_space_duration secondi, Health Monitor inserisce il server in SUPER_READ_ONLY e OFFLINE_MODE. Ad esempio:
[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
Vedere Risoluzione del problema SUPER_READ_ONLY e OFFLINE_MODE causato dallo spazio di storage libero ridotto.
Avvertenza critica Se lo spazio su disco disponibile scende al di sotto di disk_low_space_critical_level per un periodo di tempo qualsiasi, Health Monitor attiva la modalità SUPER_READ_ONLY del server. Ad esempio:
[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
Avvertenza timer annullato Se lo spazio disponibile supera il limite di spazio minimo prima del completamento di disk_low_space_duration secondi, il timer della modalità di fallback viene annullato e Health Monitor invia un messaggio di stato o di avvertenza se lo spazio disponibile è ancora compreso in un intervallo di avvertenza. Ad esempio:
[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
Avviso di memoria Se la memoria disponibile è inferiore a una delle soglie definite da memory_usage_warning_level_*, Health Monitor genera un'avvertenza che include i dettagli di diagnostica della memoria in valori separati da virgole (csv). I dati CSV nell'esempio seguente sono stati rimossi a causa di un vincolo di spazio.
[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>...