Health Monitor

O Health Monitor coleta estatísticas para uso da CPU do sistema, uso do disco, uso da memória e o processo do servidor MySQL (mysqld). As estatísticas são registradas em tabelas de histórico, para as quais o Health Monitor coleta amostras uma vez por minuto e retém dados do valor de um dia. Você também pode acessar essas estatísticas em tabelas que são preenchidas com leituras atuais sob demanda ao consultá-las.

Visão Geral do Health Monitor

O Health Monitor amostra informações de espaço em disco, informações de memória do sistema e informações de memória do processo a cada sessenta segundos e armazena dados de um dia em tabelas no Esquema de Desempenho do MySQL Server. Se o espaço em disco disponível ou a memória disponível ficar abaixo de determinados limites predefinidos, o Health Monitor emitirá avisos e o registrará na tabela performance_schema.error_log.

O Health Monitor usa unidades de armazenamento MiB/GiB/TiB em que 100 GB = 93 GiB.

O armazenamento total disponível para um sistema de BD contém o seguinte:

  • Armazenamento disponível: O espaço em disco após a reserva de armazenamento é excluído do armazenamento total.
  • Reserva de armazenamento: O espaço em disco menor que as variáveis de configuração disk_low_space_level e disk_low_space_percent. O valor padrão de disk_low_space_level é 5.000 MiB e o valor padrão de disk_low_space_percent é 4% do armazenamento total.
  • Armazenamento crítico: O espaço em disco na reserva de armazenamento abaixo do limite crítico, que é definido pela variável de configuração disk_low_space_critical_level. Este é o espaço em disco mínimo viável para o sistema evitar a exaustão do disco. O espaço de armazenamento crítico padrão é 2.000 MiB.

Avisos de espaço em disco

Quando o espaço em disco fica abaixo de determinada porcentagem do armazenamento disponível, o Health Monitor emite os seguintes avisos e o registra na tabela performance_schema.error_log:

  • WARNING_DISK_USAGE_LEVEL_1: Quando o espaço em disco cai abaixo de 20% do armazenamento disponível.
  • WARNING_DISK_USAGE_LEVEL_2: Quando o espaço em disco fica abaixo de 10% do armazenamento disponível.
  • WARNING_DISK_USAGE_LEVEL_3: Quando o espaço em disco cai abaixo de 5% do armazenamento disponível.

Por exemplo, se o armazenamento total for 100.000 MiB e a reserva de armazenamento for menor das duas variáveis de configuração a seguir:

  • disk_low_space_level : O valor padrão é 5.000 MiB.
  • disk_low_space_percent: É 4% do armazenamento total, ou seja, 4% de 100.000 MiB = 4.000 MiB.

A reserva de armazenamento é 4.000 MiB, que é menor das duas variáveis de configuração.

Você pode encontrar o armazenamento disponível excluindo a reserva de armazenamento do armazenamento total:

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

O Health Monitor emite os seguintes avisos:

  • WARNING_DISK_USAGE_LEVEL_1: Quando o espaço em disco fica abaixo de 20% do armazenamento disponível, que é 20/100*96,000 = 19,200 MiB.
  • WARNING_DISK_USAGE_LEVEL_2: Quando o espaço em disco fica abaixo de 10% do armazenamento disponível, que é 10/100*96,000 = 9,600 MiB.
  • WARNING_DISK_USAGE_LEVEL_3: Quando o espaço em disco cai abaixo de 5% do armazenamento disponível, que é 5/100*96,000 = 4,800 MiB.

Falta significativa ou sustentada de espaço em disco

O Health Monitor define uma escassez significativa ou sustentada de espaço em disco quando as seguintes condições são atendidas:

  • Falta significativa: O espaço em disco fica abaixo do limite crítico definido por disk_low_space_critical_level.
  • Falta sustentada: O espaço em disco fica abaixo da reserva de armazenamento e permanece na reserva de armazenamento pela duração definida pela variável de configuração disk_low_space_duration.

Quando há uma escassez significativa ou sustentada de espaço em disco, o Health Monitor faz o seguinte:

  • SUPER_READ_ONLY=ON: Define as variáveis do sistema, SUPER_READ_ONLY, como ON no MySQL Server. O MySQL Server rejeita todas as novas instruções de gravação SQL de entrada (UPDATE, INSERT, DELETE e DDL), independentemente dos usuários e dos privilégios. A execução de transações pode ser concluída, mas novas gravações são proibidas até que o espaço em disco esteja disponível novamente. Você não pode carregar dados no cluster HeatWave quando o servidor está no modo SUPER_READ_ONLY.

    Em alguns casos, bloqueios de leitura global, commits em andamento ou bloqueios de metadados impedem que o Health Monitor defina a variável de sistema SUPER_READ_ONLY. Nesses casos, se você definir a variável health_monitor.disk_fallback_force, o Health Monitor identificará e encerrará consultas ativas contendo bloqueios globais para definir a variável do sistema SUPER_READ_ONLY.

  • OFFLINE_MODE=ON: Define a variável do sistema, OFFLINE_MODE, como ON no MySQL Server. O MySQL Server desconecta usuários clientes que não têm o privilégio CONNECTION_ADMIN, encerra instruções de execução e libera bloqueios e bloqueia novas conexões com um erro apropriado.
  • super_read_only_disk_full=ON: Define a variável de status, super_read_only_disk_full, como ON indicando que o modo somente leitura foi acionado devido ao baixo espaço em disco. Você pode ver o valor da variável de status super_read_only_disk_full com um dos seguintes comandos:
    • 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';

As variáveis do sistema mudam o comportamento do MySQL Server, enquanto as variáveis de status são indicadores estáticos do estado do MySQL Server.

Recuperação para a Operação Normal

Depois que SUPER_READ_ONLY e OFFLINE_MODE forem definidos, o Health Monitor fará o seguinte:

  • Verifique o espaço em disco a cada minuto.
  • Defina OFFLINE_MODE=OFF se o espaço em disco disponível se recuperar e permanecer acima de disk_recovery_level por disk_recovery_time_1 segundos ou mais.
  • Defina SUPER_READ_ONLY=OFF se o espaço em disco disponível se recuperar e permanecer acima de disk_recovery_level por mais disk_recovery_time_2 segundos ou mais.

As operações normais são retomadas quando o espaço em disco permanece acima de disk_recovery_level por disk_recovery_time_1 + disk_recovery_time_2 segundos.

Depois que o espaço em disco se recupera, o Health Monitor limpa as variáveis do sistema, SUPER_READ_ONLY e OFFLINE_MODE, e a variável de status, super_read_only_disk_full. Você não precisa reiniciar a instância MySQL para limpar as variáveis.

Se houver uma falta significativa ou sustentada de espaço em disco novamente, o Health Monitor definirá novamente as variáveis do sistema, SUPER_READ_ONLY e OFFLINE_MODE, e a variável de status, super_read_only_disk_full, como ON no MySQL Server.

Antes de retornar uma instância principal de um sistema de banco de dados de alta disponibilidade para o modo operacional normal, o Health Monitor verifica se o servidor está on-line com a maioria do grupo. O Health Monitor nunca define SUPER_READ_ONLY ou OFFLINE_MODE nas instâncias secundárias.

Incremento de Recuperação, Ciclo Máximo de Recuperação e Janela de Recuperação

Cada vez que o MySQL Server se recupera de uma escassez significativa ou sustentada de espaço em disco, o Health Monitor aumenta o tempo de recuperação do disco em disk_recovery_increment segundos.

Por exemplo, se disk_recovery_time_1 = 300 segundos e disk_recovery_time_2 = 600 segundos e disk_recovery_increment = 400 segundos, o tempo de recuperação do disco para cada ciclo será o seguinte:

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

O Health Monitor restaura para o modo operacional normal um máximo de disk_recovery_max_cycles vezes dentro de uma janela fixa de disk_recovery_window segundos, a partir do último ciclo de recuperação. Por exemplo, se disk_recovery_max_cycles for definido como 5 e disk_recovery_window for definido como 86.400 segundos (1 dia), o Health Monitor poderá restaurar para o modo operacional normal cinco vezes em uma janela de 86.400 segundos. Se ocorrer uma escassez significativa ou sustentada na sexta vez na mesma janela, as variáveis do sistema, SUPER_READ_ONLY e OFFLINE_MODE, serão definidas como ATIVADAS.

A contagem de recuperação é redefinida após disk_recovery_window segundos a partir da última recuperação.

Avisos de Memória

Quando a memória disponível fica abaixo de determinados limites, o Health Monitor emite os seguintes avisos:

  • WARNING_MEMORY_USAGE_LEVEL_1: Quando a memória disponível fica abaixo de 1024 MiB.
  • WARNING_MEMORY_USAGE_LEVEL_2: Quando a memória disponível fica abaixo de 500 MiB.
  • WARNING_MEMORY_USAGE_LEVEL_3: Quando a memória disponível fica abaixo de 100 MiB.

O Health Monitor registra as informações relacionadas à versão MySQL, ao uso da memória global e a várias definições de configuração no log de erros. As informações são registradas como valores separados por vírgulas para facilitar a transferência para uma planilha para análise posterior.

Exibindo Tabelas do Health Monitor

As tabelas do Health Monitor armazenam dados e estatísticas de monitoramento no Esquema de Desempenho do MySQL Server.

As tabelas de integridade contêm informações de armazenamento do disco, informações de memória do sistema e informações de memória do processo.

As tabelas de estatísticas contêm estatísticas sobre o uso da CPU do sistema, o uso do disco, o uso da memória e o processo do servidor MySQL (mysqld). Cada tabela de estatísticas tem duas versões, uma versão sob demanda, que é preenchida com leituras atuais quando você a consulta, e uma versão de histórico para a qual o Health Monitor coleta amostras uma vez por minuto e retém o valor de dados de um dia. As duas versões da tabela têm as mesmas colunas.

Usando um Cliente de Linha de Comando

Use um cliente de linha de comando, como MySQL Client ou MySQL Shell, para exibir as tabelas do Health Monitor.

Esta tarefa requer o seguinte:
  1. Para o Shell MySQL, alterne para o modo SQL digitando o comando \sql.
  2. Digite a seguinte instrução SQL, especificando a tabela que deseja exibir:
    SELECT * FROM performance_schema.<health_monitor_table>;

    Por exemplo, para exibir o status do armazenamento em disco, use o seguinte comando SQL:

    SELECT * FROM performance_schema.health_block_device;
    Observação

    Para exibir a lista completa de tabelas, você pode especificar em <health_monitor_table>. Consulte Tabelas do Health Monitor.
Você obtém uma resposta semelhante à seguinte, que mostra as informações de status do armazenamento em 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         |

Tabelas do Health Monitor

Consulte as Tabelas do Health Monitor para ver as informações de armazenamento em disco, as informações de memória do sistema e as informações de memória do processo.

A lista completa das tabelas do Health Monitor é a seguinte:

Tabela performance_schema.health_block_device

O Health Monitor usa a tabela performance_schema.health_block_device no Esquema de Desempenho do MySQL Server para armazenar dados no espaço em disco usado e disponível em um sistema de banco de dados.

Tabela 17-1 health_block_device Tabela do Esquema de Desempenho

Coluna Descrição
DEVICE O nome do dispositivo para o disco.
TIMESTAMP O horário em que a amostra de dados nesta linha foi coletada.
TOTAL_BYTES O volume total de armazenamento no dispositivo, em bytes.
AVAILABLE_BYTES O volume de armazenamento disponível no dispositivo, em bytes.
USE_PERCENT A porcentagem do espaço em disco em uso.
MOUNT_POINT O ponto de montagem do dispositivo.
Tabela performance_schema.health_system_memory

O Health Monitor usa a tabela performance_schema.health_system_memory no Esquema de Desempenho do MySQL Server para armazenar dados no uso da memória pelo sistema de banco de dados

Tabela 17-2 health_system_memory Tabela do Esquema de Desempenho

Coluna Descrição
TIMESTAMP O horário em que a amostra de dados nesta linha foi coletada.
TOTAL_MEMORY A quantidade total de memória do sistema, em bytes.
AVAILABLE A memória disponível para iniciar novos aplicativos sem swapping, em bytes.
USE_PERCENT A porcentagem de memória em uso.
MEMORY_FREE A quantidade de memória não utilizada.
MEMORY_FS_CACHE O cache de página do sistema de arquivos.
SWAP_TOTAL O volume total de memória de permuta.
SWAP_FREE O volume total de memória swap livre.
Tabela performance_schema.health_process_memory

O Health Monitor usa a tabela performance_schema.health_process_memory no Esquema de Desempenho do MySQL Server para armazenar dados no uso da memória pelo processo do MySQL Server (mysqld) no sistema de banco de dados.

Tabela 17-3 health_process_memory Tabela do Esquema de Desempenho

Coluna Descrição
TIMESTAMP O horário em que a amostra de dados nesta linha foi coletada.
PROCESS_NAME O nome do processo do MySQL Server.
PID O identificador do sistema para o processo do MySQL Server.
VM_RSS O tamanho do conjunto residente do processo do servidor MySQL, em bytes.
VM_DATA O tamanho do segmento de dados do processo do MySQL Server, em bytes.
VM_SWAP O tamanho do segmento de permuta do processo do servidor MySQL, em bytes.
PAGE_FAULTS O número de falhas de página que requerem Entrada/Saída de disco.
Tabela performance_schema.system_cpu_stats

O Health Monitor coleta estatísticas para uso da CPU pelo sistema de banco de dados. As estatísticas estão disponíveis em duas tabelas no Esquema de Desempenho do MySQL Server, uma tabela sob demanda e uma tabela de histórico correspondente. As duas tabelas têm as mesmas colunas.

A tabela performance_schema.system_cpu_stats no Esquema de Desempenho do MySQL Server é preenchida com uma amostra de dados quando você a consulta. A tabela performance_schema.system_cpu_stats_history armazena amostras de dados regularmente.

As estatísticas nessas tabelas são provenientes do arquivo do sistema Linux /proc/stat.

Tabela 17-4 Tabelas do Esquema de Desempenho system_cpu_stats e system_cpu_stats_history

Coluna Descrição
TIMESTAMP O horário em que a amostra de dados nesta linha foi coletada.
CPU A linha da CPU mostra os dados agregados de uso da CPU, e cada linha numerada (por exemplo, cpu0, cpu1) mostra dados de um processo individual. Todos os horários em milissegundos.
USER_MS O tempo gasto no modo de usuário.
NICE_MS O tempo gasto no modo de usuário com baixa prioridade.
SYSTEM_MS O tempo gasto no modo de sistema.
IDLE_MS O tempo gasto na tarefa ociosa.
IOWAIT_MS O tempo gasto aguardando a conclusão da E/S.
IRQ_MS O tempo gasto na manutenção de interrupções de hardware.
SOFTIRQ_MS O tempo gasto na manutenção de interrupções de software.
STEAL_MS O tempo gasto na execução de outros sistemas operacionais em um ambiente virtualizado.
GUEST_MS O tempo gasto na execução de uma CPU virtual com prioridade normal.
GUEST_NICE_MS O tempo gasto na execução de uma CPU virtual com baixa prioridade.
Tabela performance_schema.system_disk_stats

O Health Monitor coleta estatísticas para uso do disco pelo sistema de banco de dados. As estatísticas estão disponíveis em duas tabelas no Esquema de Desempenho do MySQL Server, uma tabela sob demanda e uma tabela de histórico correspondente. As duas tabelas têm as mesmas colunas.

A tabela performance_schema.system_disk_stats no Esquema de Desempenho do MySQL Server é preenchida com uma amostra de dados quando você a consulta. A tabela performance_schema.system_disk_stats_history armazena amostras de dados regularmente.

As estatísticas nessas tabelas são provenientes do arquivo do sistema Linux /proc/diskstats.

Tabela 17-5 Tabelas do Esquema de Desempenho system_disk_stats e system_disk_stats_history

Coluna Descrição
TIMESTAMP O horário em que a amostra de dados nesta linha foi coletada.
DEVICE O nome do dispositivo para este disco.
READS O número de leituras concluídas com êxito.
READ_BYTES O número de bytes lidos.
READ_TIME_MS O tempo gasto lendo, em milissegundos.
WRITES O número de gravações concluídas com êxito.
WRITE_BYTES O número de bytes gravados.
WRITE_TIME_MS O tempo gasto escrevendo, em milissegundos.
FLUSHES O número de solicitações de liberação concluídas com sucesso.
FLUSH_TIME_MS O tempo gasto com descarga, em milissegundos.
Tabela performance_schema.system_memory_stats

O Health Monitor coleta estatísticas para uso de memória pelo sistema de banco de dados. As estatísticas estão disponíveis em duas tabelas no Esquema de Desempenho do MySQL Server, uma tabela sob demanda e uma tabela de histórico correspondente. As duas tabelas têm as mesmas colunas.

A tabela performance_schema.system_memory_stats no Esquema de Desempenho do MySQL Server é preenchida com uma amostra de dados quando você a consulta. A tabela performance_schema.system_memory_stats_history armazena amostras de dados regularmente.

As estatísticas nessas tabelas são provenientes do arquivo do sistema Linux /proc/meminfo.

Tabela 17-6 Tabelas do Esquema de Desempenho system_memory_stats e system_memory_stats_history

Coluna Descrição
TIMESTAMP O horário em que a amostra de dados nesta linha foi coletada.
TOTAL_BYTES A memória total do sistema utilizável, em bytes.
FREE_BYTES A memória não utilizada.
USED_BYTES A memória total utilizada.
AVAILABLE_BYTES A memória estimada disponível para iniciar novos aplicativos, em bytes.
BUFFER_BYTES A quantidade de memória usada para armazenamento temporário para blocos de disco bruto.
CACHED_BYTES A quantidade de memória usada para armazenar arquivos em cache lidos do disco (o cache da página).
SLAB_BYTES A quantidade de memória usada para armazenar em cache as estruturas de dados do kernel.
SWAP_TOTAL_BYTES A quantidade total de espaço de permuta disponível no disco.
SWAP_FREE_BYTES A quantidade total de espaço de troca não utilizado no momento.
SWAP_USED_BYTES A quantidade total de memória que foi trocada da RAM e está temporariamente no disco.
SWAP_IN A quantidade de memória trocada de volta para a RAM do disco, em KB por segundo.
SWAP_OUT A quantidade de memória trocada da RAM para o disco, em KB por segundo.
Tabela performance_schema.system_process_stats

O Health Monitor coleta estatísticas para cada thread usado pelo processo do MySQL Server no sistema de banco de dados. As estatísticas estão disponíveis em duas tabelas no Esquema de Desempenho do MySQL Server, uma tabela sob demanda e uma tabela de histórico correspondente. As duas tabelas têm as mesmas colunas.

A tabela performance_schema.system_process_stats no Esquema de Desempenho do MySQL Server é preenchida com uma amostra de dados quando você a consulta. A tabela performance_schema.system_process_stats_history armazena amostras de dados regularmente.

Para estatísticas de processo, a tabela sob demanda retorna uma linha para cada thread usado pelo processo mysqld. No entanto, a tabela de histórico armazena uma única linha para cada amostra, com os totais agregados para todos os threads usados pelo processo mysqld.

As estatísticas nessas tabelas são provenientes do arquivo do sistema Linux /proc/self/task/[pid]/stat.

Tabela 17-7 Tabelas do Esquema de Desempenho system_process_stats e system_process_stats_history

Coluna Descrição
TIMESTAMP O horário em que a amostra de dados nesta linha foi coletada.
PID O ID do processo.
PROCESS_NAME O nome do processo, que é mysqld.
TID O ID do thread individual mostrado nesta linha.
THREAD_NAME O nome do thread instrumentado para o thread individual mostrado nesta linha.
STATE Um caractere que mostra o estado do thread no momento da amostra: em execução (R), em espera interrompível (S), aguardando em suspensão ininterrupta do disco (D), thread zumbi (Z), interrompido em um sinal ou rastreamento interrompido (T), paginação (W), inativo (X), wakekill (K), acordado (W) ou estacionado (P).
UTIME_MS O tempo que este thread passou no modo de usuário, em milissegundos.
STIME_MS O tempo que este thread passou no modo kernel, em milissegundos.
CUTIME_MS O tempo que os processos filho desse processo passaram no modo de usuário, em milissegundos.
CSTIME_MS O tempo que os processos filhos desse processo passaram no modo kernel, em milissegundos.
NUM_THREADS O nunmber de fios neste processo.
VSIZE_BYTES O tamanho da memória virtual em bytes.
RSS_BYTES O número de bytes que o processo tem na memória real (o tamanho do conjunto residente).
RSSLIM_BYTES O limite em bytes no tamanho do conjunto residente do processo.
PROCESSOR O número da CPU na qual o thread foi executado pela última vez.
DELAYACCT_BLKIO_MS Os atrasos de E/S do bloco agregado, em milissegundos.
GUEST_TIME_MS O tempo do convidado para o processo, em milissegundos.
CGUEST_TIME_MS O tempo do convidado para os processos filho do processo, em milissegundos.
READ_BYTES O número de bytes que este processo extraiu da camada de armazenamento.
WRITE_BYTES O número de bytes que este processo enviou para a camada de armazenamento.

Exibindo Variáveis do Health Monitor

As variáveis do Health Monitor são definições de configuração para a atividade de monitoramento no sistema de banco de dados. Você não pode alterar os valores dessas variáveis.

Usando um Cliente de Linha de Comando

Use um cliente de linha de comando, como MySQL Client ou MySQL Shell, para exibir as variáveis do Health Monitor e seus valores.

Esta tarefa requer o seguinte:
Para exibir as variáveis do Health Monitor faça o seguinte:
  1. Para o Shell MySQL, alterne para o modo SQL digitando o comando \sql.
  2. Informe a seguinte instrução SQL:
    show variables like 'health_monitor%';
Você obtém uma resposta semelhante à seguinte:
+----------------------------------------------+-------+
| 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)

Variáveis do Health Monitor

Todas as variáveis do sistema do Health Monitor são prefixadas com health_monitor. Você não pode alterar os valores das variáveis de seus padrões em um sistema de banco de dados.

Observação

O prefixo health_monitor. é omitido da tabela abaixo. Por exemplo, disk_fallback_enable na verdade é health_monitor.disk_fallback_enable.

Tabela 17-8 Variáveis do Sistema Health Monitor

Variável de Sistema Valor Padrão Descrição
disk_fallback_enable Ativado Se houver uma escassez significativa ou sustentada de espaço em disco, o Health Monitor definirá a variável do sistema, SUPER_READ_ONLY e OFFLINE_MODE como ON no MySQL Server.
disk_fallback_force OFF Encerre consultas em primeiro plano que estejam mantendo bloqueios de metadados globais e repita a definição SUPER_READ_ONLY.
disk_low_space_critical_level 2,000 O limite crítico de espaço em disco insuficiente em MiB. Se o espaço em disco disponível ficar abaixo desse valor por qualquer duração, o Health Monitor definirá os modos SUPER_READ_ONLY e OFFLINE_MODE no MySQL Server.
disk_low_space_duration 300 A duração (em segundos) pela qual o espaço em disco disponível pode permanecer abaixo de disk_low_space_level ou disk_low_space_percent (o que for menor) antes que o Health Monitor defina os modos SUPER_READ_ONLY e OFFLINE_MODE no MySQL Server.
disk_low_space_level 5,000 O limite de espaço baixo para a reserva de armazenamento, em MiB. Se o espaço em disco disponível ficar abaixo dessa porcentagem do total de armazenamento disponível por mais tempo que o valor de disk_low_space_duration, o Health Monitor definirá os modos SUPER_READ_ONLY e OFFLINE_MODE no MySQL Server.
disk_low_space_percent 4 O limite de espaço baixo para a reserva de armazenamento, expresso em porcentagem. Se o espaço em disco disponível ficar abaixo dessa porcentagem do total de armazenamento disponível por mais tempo que o valor de disk_low_space_duration, o Health Monitor definirá os modos SUPER_READ_ONLY e OFFLINE_MODE no MySQL Server.
disk_monitored /db O ponto de montagem para estatísticas de disco
disk_retention 86,400

Por quantos segundos cada amostra de dados é retida nas tabelas de histórico para dados de uso de disco.

O valor mínimo é 1 segundo, o padrão é 86400 segundos (1 dia) e o valor máximo é 864000 segundos (10 dias).

Se memory_sample_rate=60 e memory_retention=86400, 1440 amostras serão retidas, com a amostra mais antiga excluída a cada 60 segundos.

disk_recovery_enable Ativado Defina a variável como ON para permitir a recuperação de uma escassez sustentada ou significativa e como OFF para desativar a recuperação de uma escassez sustentada ou significativa.
disk_recovery_level 5% A porcentagem do espaço total em disco acima da reserva de armazenamento.
  • Se o armazenamento disponível permanecer acima do nível disk_recovery_level por disk_recovery_time_1 segundos, o Monitor de Integridade definirá OFFLINE_MODE = OFF.
  • Se o armazenamento permanecer acima do nível disk_recovery_level por mais disk_recovery_time_2 segundos, o Monitor de Integridade definirá SUPER_READ_ONLY = OFF.
disk_recovery_time_1 300 segundos O tempo (em segundos) que o armazenamento disponível deve permanecer acima de disk_recovery_level para que o Monitor de Integridade defina OFFLINE_MODE = OFF.
disk_recovery_time_2 300 segundos O tempo adicional (em segundos) que o armazenamento disponível deve permanecer acima de disk_recovery_level após disk_recovery_time_1 antes que o Monitor de Integridade defina SUPER_READ_ONLY = OFF.
disk_recovery_max_cycles 3 ciclos O número máximo de vezes que o servidor MySQL pode ser colocado de volta no modo operacional normal dentro do período disk_recovery_cycle_window.
disk_recovery_window 86400 segundos O tempo (em segundos) após o último ciclo de recuperação bem-sucedido após o qual a contagem de recuperação é redefinida. Um valor 0 significa que a contagem de recuperação nunca é redefinida.
disk_recovery_increment 300 segundos O tempo (em segundos) para aumentar os timers de recuperação disk_recovery_time_1 e disk_recovery_time_2 para cada ciclo de recuperação.
disk_running Ativado O estado ativo do monitor de disco do Health Monitor.
disk_sample_rate 60 A frequência da coleta de dados do disco, em segundos. Por padrão, os dados são coletados a cada 60 segundos. A taxa mínima de amostragem é de 1 (a cada segundo) e o máximo é de 86400 (uma vez por dia).
disk_usage_warning_level_1 20 Uma porcentagem do espaço em disco disponível acima do disk_low_space_level definido. Se o espaço em disco disponível ficar abaixo desse nível, a advertência WARNING_DISK_USAGE_LEVEL_1 será gerada.
disk_usage_warning_level_2 10 Uma porcentagem do espaço em disco disponível, acima do disk_low_space_level definido. Se o espaço em disco disponível ficar abaixo desse nível, a advertência WARNING_DISK_USAGE_LEVEL_2 será gerada.
disk_usage_warning_level_3 5 Uma porcentagem do espaço em disco disponível, acima do disk_low_space_level definido. Se o espaço em disco disponível ficar abaixo desse nível, a advertência WARNING_DISK_USAGE_LEVEL_3 será gerada.
memory_reporting Ativado Permite a geração de relatórios de dados de memória.
memory_retention 86,400

Por quantos segundos cada amostra de dados é retida nas tabelas de histórico para dados de uso de memória.

O valor mínimo é 1 segundo, o padrão é 86400 segundos (1 dia) e o valor máximo é 864000 segundos (10 dias).

memory_running Ativado O estado ativo do monitor de memória do Health Monitor.
memory_sample_rate 60 A frequência de coleta de dados de memória, em segundos. Por padrão, os dados são coletados a cada 60 segundos. A taxa mínima de amostragem é de 1 (a cada segundo) e o máximo é de 86400 (uma vez por dia).
memory_usage_warning_level_1 1,024 Uma quantidade de memória disponível (MiB). Se a memória disponível ficar abaixo desse nível, o aviso WARNING_MEMORY_USAGE_LEVEL_1 será gerado.
memory_usage_warning_level_2 500 Uma quantidade de memória disponível (MiB). Se a memória disponível ficar abaixo desse nível, o aviso WARNING_MEMORY_USAGE_LEVEL_2 será gerado.
memory_usage_warning_level_3 100 Uma quantidade de memória disponível (MiB). Se a memória disponível ficar abaixo desse nível, o aviso WARNING_MEMORY_USAGE_LEVEL_3 será gerado.
status_interval 10 A frequência (em múltiplos de disk_sample_rate) do envio das mensagens de status para a tabela de log de erros. Por exemplo, se status_interval = 10 e disk_sample_rate = 60 segundos, o Health Monitor enviará uma mensagem de status à tabela de log de erros a cada 600 segundos.
system_cpu_stats_history Ativado Se as estatísticas de uso da CPU do sistema são coletadas e armazenadas na tabela Esquema de Desempenho system_cpu_stats_history. Se essas estatísticas não forem armazenadas, você ainda poderá acessar um snapshot sob demanda consultando a tabela system_cpu_stats.
system_disk_stats_history Ativado Se as estatísticas de uso do disco do sistema são coletadas e armazenadas na tabela Esquema de Desempenho system_memory_stats_history. Se essas estatísticas não forem armazenadas, você ainda poderá acessar um snapshot sob demanda consultando a tabela system_memory_stats.
system_memory_stats_history Ativado Se as estatísticas de uso da memória do sistema são coletadas e armazenadas na tabela Esquema de Desempenho system_disk_stats_history. Se essas estatísticas não forem armazenadas, você ainda poderá acessar um snapshot sob demanda consultando a tabela system_disk_stats.
system_process_stats_history Ativado Se as estatísticas do processo do servidor MySQL (mysqld) são coletadas e armazenadas na tabela Esquema de Desempenho system_process_stats_history. Se essas estatísticas não forem armazenadas, você ainda poderá acessar um snapshot sob demanda consultando a tabela system_process_stats.
system_retention 86,400

Por quantos segundos cada amostra de dados é retida nas tabelas de histórico para estatísticas do sistema e do processo.

O valor mínimo é 1 segundo, o padrão é 86400 segundos (1 dia) e o valor máximo é 864000 segundos (10 dias).

system_running Ativado Se as estatísticas do sistema são coletadas pelo Health Monitor. Quando isso é definido como ON, as tabelas de estatísticas para uso da CPU do sistema, uso do disco, uso da memória e o processo do servidor MySQL (mysqld) estão disponíveis e as tabelas de histórico correspondentes são preenchidas se suas variáveis do sistema forem definidas como ON.
system_sample_rate 60 A frequência da coleta de estatísticas do sistema, em segundos. Por padrão, os dados são coletados a cada 60 segundos. A taxa mínima de amostragem é de 1 (a cada segundo) e o máximo é de 86400 (uma vez por dia).

Health Monitor Messages

Os erros, avisos e atualizações de status do Health Monitor são registrados em performance_schema.error_log. O Health Monitor abrevia TiB como T, GiB como G e MiB como M no log de erros. Por exemplo, 306.6G = 306,6 GiB = 329,2 GB.

Tabela 17-9 Mensagens do Health Monitor

Tipo de Mensagem Descrição
Atualização do Status O Health Monitor emite uma atualização de status de rotina de acordo com o número de segundos definido por sample_rate * status_interval. Por exemplo:
[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)
Aviso de Limite Se a quantidade de espaço disponível ficar abaixo de um dos limites definidos por disk_usage_warning_level_*, o Health Monitor emitirá um aviso. O exemplo a seguir mostra a advertência para disk_usage_warning_level_2, definido como 4% do espaço total acima do limite de pouco espaço:
[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
Aviso de disk_low_space_duration Se o espaço em disco disponível ficar abaixo do limite de espaço baixo de 18 GiB, o Health Monitor iniciará o temporizador de fallback e emitirá um aviso. Por exemplo:
[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
Aviso de Modo OFFLINE/SUPER_READ_ONLY Se o espaço em disco disponível permanecer abaixo do limite de pouco espaço por mais de disk_low_space_duration segundos, o Health Monitor colocará o servidor em SUPER_READ_ONLY e OFFLINE_MODE. Por exemplo:
[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
Consulte Resolvendo o Problema SUPER_READ_ONLY e OFFLINE_MODE.
Advertência Crítica Se o espaço em disco disponível ficar abaixo de disk_low_space_critical_level por qualquer duração, o Health Monitor colocará o servidor no modo SUPER_READ_ONLY. Por exemplo:
[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
Aviso de Timer Cancelado Se o espaço disponível ficar acima do limite de pouco espaço antes da conclusão de disk_low_space_duration segundos, o timer do modo de fallback será cancelado e o Health Monitor emitirá uma mensagem de status ou uma mensagem de advertência se o espaço disponível ainda estiver dentro de uma faixa de advertência. Por exemplo:
[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
Advertência de Memória Se a memória disponível ficar abaixo de um dos limites definidos por memory_usage_warning_level_*, o Health Monitor emitirá uma advertência que incluirá os detalhes do diagnóstico de memória em valores separados por vírgulas (csv). Os dados csv no exemplo a seguir foram removidos devido à restrição de espaço.
[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>...

Tópicos Relacionados