
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_data
mas 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) -
-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 490371968
aproximadamente 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.