Я пытаюсь отслеживать общее количество используемых байтов в буферном пуле MySQL 5.7 InnoDB, который может достигать 100 ГБ, используя Innodb_buffer_pool_bytes_data
но кажется, что эта переменная состояния представляет собой 32 -битное целое число без знака, когда я запрашиваю ее, поэтому она переполняется, когда байты превышают 2 ^ 32.
Кажется, что внутри MySQL это длинное целое без знака(https://github.com/mysql/mysql-server/blob/5.7/storage/innobase/include/srv0srv.h#L892)?
Сначала я подумал, что переполнение произошло в моем стеке мониторинга (Telegraf+InfluxDB+Grafana)-
-, но прямой запрос к MySQL, кажется, показывает, что он из MySQL, а не из моего решения для мониторинга :
SHOW GLOBAL STATUS WHERE Variable_name = "Innodb_buffer_pool_bytes_data"
-, дает 490371968
примерно для той же временной метки, что и в Grafana выше.
Как я могу точно отслеживать истинное значение?
Этот график выглядит так, будто MySQL перезапущен (или перезапущен сервер) примерно в 12:16. buffer_pool будет расти, пока не достигнет innodb_buffer_pool_size
.
Если у вас недостаточно оперативной памяти для пула буферов (и прочего), это может привести к сбою. Этот параметр должен быть установлен примерно на 70% доступной оперативной памяти.