
Estoy tratando de monitorear el número total de bytes usados en un grupo de búfer MySQL 5.7 InnoDB, que puede llegar hasta 100 GB, Innodb_buffer_pool_bytes_data
pero parece que esta variable de estado es un entero sin signo de 32 bits cuando la consulto, por lo que se desborda cuando los bytes pasan de 2 ^ 32.
Parece ser un entero largo sin signo internamente en MySQL (https://github.com/mysql/mysql-server/blob/5.7/storage/innobase/include/srv0srv.h#L892)?
Al principio pensé que el desbordamiento estaba en mi pila de monitoreo (Telegraf+InfluxDB+Grafana).
-pero consultar MySQL directamente parece revelar que es de MySQL y no de mi solución de monitoreo:
SHOW GLOBAL STATUS WHERE Variable_name = "Innodb_buffer_pool_bytes_data"
-produce 490371968
aproximadamente la misma marca de tiempo de muestra vista en Grafana arriba.
¿Cómo puedo controlar con precisión el valor real?
Respuesta1
Ese gráfico parece que MySQL se reinició (o el servidor se reinició) aproximadamente a las 12:16. El buffer_pool crecerá hasta llegar a innodb_buffer_pool_size
.
Si no tiene suficiente RAM para buffer_pool (y otras cosas), puede fallar. Esa configuración debe establecerse en aproximadamente el 70% de la RAM disponible.