Monitorando o uso de bytes de grandes pools de buffer do MySQL InnoDB?

Monitorando o uso de bytes de grandes pools de buffer do MySQL InnoDB?

Estou tentando monitorar o número total de bytes usados ​​​​em um buffer pool MySQL 5.7 InnoDB, que pode ir até 100 GB, usando, Innodb_buffer_pool_bytes_datamas parece que essa variável de status é um número inteiro não assinado de 32 bits quando eu a consulto, então ela transborda quando bytes passam de 2 ^ 32.

Parece ser um número inteiro longo e não assinado internamente no MySQL (https://github.com/mysql/mysql-server/blob/5.7/storage/innobase/include/srv0srv.h#L892)?

A princípio pensei que o estouro era minha pilha de monitoramento (Telegraf + InfluxDB + Grafana) -

Grafana Graph mostrando Interger Overflow ao longo do tempo com Innodb_buffer_pool_bytes_data tendo 490 MB atualmente

-mas consultar o MySQL diretamente parece revelar que é do MySQL e não da minha solução de monitoramento:

SHOW GLOBAL STATUS WHERE Variable_name = "Innodb_buffer_pool_bytes_data"

-produz 490371968aproximadamente o mesmo carimbo de data/hora de amostra visto no Grafana acima.

Como posso monitorar com precisão o valor real?

Responder1

Esse gráfico parece que o MySQL foi reiniciado (ou o servidor reiniciado) por volta das 12h16. O buffer_pool crescerá até atingir innodb_buffer_pool_size.

Se você não tiver RAM suficiente para o buffer_pool (além de outras coisas), ele poderá travar. Essa configuração deve ser definida para cerca de 70% da RAM disponível.

informação relacionada