Byte-Nutzung großer MySQL InnoDB-Pufferpools überwachen?

Byte-Nutzung großer MySQL InnoDB-Pufferpools überwachen?

Ich versuche, die Gesamtzahl der verwendeten Bytes in einem MySQL 5.7 InnoDB-Pufferpool zu überwachen, der bis zu 100 GB groß sein kann, Innodb_buffer_pool_bytes_dataaber es scheint, dass diese Statusvariable eine vorzeichenlose 32-Bit-Ganzzahl ist, wenn ich sie abfrage, sodass sie überläuft, wenn die Anzahl der Bytes 2^32 überschreitet.

Es scheint sich intern in MySQL um einen vorzeichenlosen Long Integer zu handeln (https://github.com/mysql/mysql-server/blob/5.7/storage/innobase/include/srv0srv.h#L892)?

Zuerst dachte ich, der Überlauf liege in meinem Überwachungsstapel (Telegraf+InfluxDB+Grafana)-

Grafana-Diagramm, das den Interger-Überlauf im Zeitverlauf zeigt, wobei Innodb_buffer_pool_bytes_data derzeit 490 MB beträgt

-aber eine direkte Abfrage von MySQL scheint zu ergeben, dass es von MySQL stammt und nicht aus meiner Überwachungslösung:

SHOW GLOBAL STATUS WHERE Variable_name = "Innodb_buffer_pool_bytes_data"

- ergibt 490371968ungefähr denselben Beispiel-Zeitstempel wie oben in Grafana.

Wie kann ich den tatsächlichen Wert genau überwachen?

Antwort1

Dieses Diagramm sieht aus, als ob MySQL (oder der Server) um etwa 12:16 neu gestartet wurde. Der Pufferpool wächst, bis er erreicht innodb_buffer_pool_size.

Wenn Sie nicht genügend RAM für den Pufferpool (und andere Dinge) haben, kann es abstürzen. Diese Einstellung sollte auf etwa 70 % des verfügbaren RAM eingestellt werden.

verwandte Informationen