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

Мониторинг использования байтов в больших пулах буферов 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, показывающий переполнение Interger с течением времени, при этом Innodb_buffer_pool_bytes_data в настоящее время составляет 490 МБ

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

SHOW GLOBAL STATUS WHERE Variable_name = "Innodb_buffer_pool_bytes_data"

-выдает 490371968примерно ту же временную метку образца, что и в Grafana выше.

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

решение1

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

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

Связанный контент