Отслеживание использования байтов в больших буферных пулах MySQL InnoDB?

Я пытаюсь отслеживать общее количество используемых байтов в буферном пуле 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)-

Grafana Graph, показывающий Interger Overflow во времени с Innodb _буфер _пул _байты _объем данных в настоящее время составляет 490 МБ

-, но прямой запрос к MySQL, кажется, показывает, что он из MySQL, а не из моего решения для мониторинга :

SHOW GLOBAL STATUS WHERE Variable_name = "Innodb_buffer_pool_bytes_data"

-, дает 490371968примерно для той же временной метки, что и в Grafana выше.

Как я могу точно отслеживать истинное значение?

0
задан 29 September 2021 в 05:47
1 ответ

Этот график выглядит так, будто MySQL перезапущен (или перезапущен сервер) примерно в 12:16. buffer_pool будет расти, пока не достигнет innodb_buffer_pool_size.

Если у вас недостаточно оперативной памяти для пула буферов (и прочего), это может привести к сбою. Этот параметр должен быть установлен примерно на 70% доступной оперативной памяти.

0
ответ дан 30 September 2021 в 15:21

Теги

Похожие вопросы