Verwenden Sie Prometheus, um den verbleibenden verfügbaren Prozentsatz der MySQL-Autoinkrement-Primärschlüssel zu zählen

Verwenden Sie Prometheus, um den verbleibenden verfügbaren Prozentsatz der MySQL-Autoinkrement-Primärschlüssel zu zählen

Vor kurzem hat eine Datenbank in der Produktionsumgebung Protokolldaten wie verrückt geschrieben, was zu einem Überlauf der Primärschlüsselwerte führte. Daher muss dieser Indikator überwacht werden.

mysqld_exporter verfügt über diese Funktion. Hier sind die Startparameter, die ich verwende:

kein Befehl ./mysqld_exporter --config.my-cnf="./my.cnf" --web.listen-address=":9104" --collect.heartbeat --collect.auto_increment.columns --collect.binlog_size --collect.engine_innodb_status --collect.engine_tokudb_status --collect.slave_hosts --collect.slave_status --collect.info_schema.processlist --collect.info_schema.innodb_metrics > /dev/null 2>&1 &

Die rot hervorgehobenen Parameter werden verwendet, um die Nutzung der Auto-Increment-ID zu erfassen.

Das tatsächlich ausgeführte SQL sieht ungefähr so ​​aus:

WÄHLEN 
 Tabellenschema,
 Tabellenname,
 Spaltenname,
 AUTO_INCREMENT,
 POW(2, CASE Datentyp
   WENN 'tinyint' DANN 7
   WENN 'smallint' DANN 15
   WENN 'mediumint' DANN 23
   WENN 'int' DANN 31
   WENN 'bigint' DANN 63
   END+(Spaltentyp LIKE '% unsigned'))-1 AS max_int 
  VON information_schema.tables t
   JOIN information_schema.columns c USING (Tabellenschema, Tabellenname)
  WO
   c.extra = "auto_increment" 
  UND
   t.TABLE_SCHEMA NICHT IN ('Informationsschema', 'MySQL', 'Sys', 'Test', 'Leistungsschema') 
  UND
   t.auto_increment IST NICHT NULL; 

In der Prometheus-Weboberfläche können wir das folgende PromQL testen und schreiben, um die Bibliothek + den Tabellennamen der Instanz mit der verbleibenden Auto-Increment-ID-Rate von weniger als 40 % zu finden

(mysql_info_schema_auto_increment_column_max{schema!~'test|mysql'} - mysql_info_schema_auto_increment_column{schema!~'test|mysql'})/mysql_info_schema_auto_increment_column_max{schema!~'test|mysql'}*100 < 40

Nachdem wir die Daten erhalten haben, können wir relevante Alarme im Alertmanager konfigurieren oder wie folgt ein Diagramm auf Grafana zeichnen:

Dies ist das Ende dieses Artikels über die Verwendung von Prometheus zum Zählen des verbleibenden verfügbaren Prozentsatzes der MySQL-Autoinkrement-Primärschlüssel. Weitere relevante Prometheus-Statistiken zu MySQL-Autoinkrement-Primärschlüsseln finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Verwenden Sie Grafana+Prometheus, um die Leistung des MySQL-Dienstes zu überwachen
  • Detaillierte Erläuterung der Leistungsüberwachung des MySQL-Servers mit Prometheus und Grafana
  • SpringBoot-Beispielcode mit Prometheus-Überwachung
  • Beispiel für die Integration der Prometheus-Überwachung mit Springboot2.X
  • Detaillierte Schritte für SpringBoot+Prometheus+Grafana zur Implementierung von Anwendungsüberwachung und Alarm
  • Detailliertes Installations- und Konfigurationstutorial von Prometheus
  • Prometheus-Tutorial für die ersten Schritte: SpringBoot implementiert die Überwachung benutzerdefinierter Metriken
  • Detaillierte Erläuterung des Prozesses zur Entwicklung des Middleware-Exporters in Prometheus
  • So integrieren Sie Prometheus in Springboot
  • So schreiben Sie benutzerdefinierte Indikatoren mit der Python-Bibliothek Prometheus (vollständiger Code)
  • Detaillierte Erläuterung des Tutorials zur Überwachung von Springboot-Anwendungen mit Prometheus+Grafana
  • Prometheus überwacht MySQL mithilfe der Grafana-Anzeige

<<:  Detaillierte Erklärung der Entwurfsmuster des JavaScript-Frameworks

>>:  Modularität in Node.js, npm-Paketmanager erklärt

Artikel empfehlen

Vue + Element zur dynamischen Anzeige von Hintergrunddaten zu Optionen

brauchen: Implementieren Sie die dynamische Anzei...

Beispielanalyse der Listen-Direktive in Nginx

Handlungsüberblick Im vorherigen Artikel haben wi...

Die Umsetzung von Youdas neuem Petite-Vue

Inhaltsverzeichnis Vorwort Einführung Live Einfac...

So entwerfen und optimieren Sie MySQL-Indizes

Inhaltsverzeichnis Was ist ein Index? Prinzip der...

Eine kurze Diskussion zu DDL und DML in MySQL

Inhaltsverzeichnis Vorwort 1. DDL 1.1 Datenbankop...

Vue führt einen einfachen zufälligen Namensaufruf durch

Inhaltsverzeichnis Layoutteil: <div id="a...

Lösung für FEHLER 1366 bei der Eingabe von Chinesisch in MySQL

Beim Eingeben von Chinesisch in MySQL tritt der f...

Vor- und Nachteile von bedingten Kommentaren im Internet Explorer

Die bedingten Kommentare des Internet Explorers s...

So rufen Sie die Browser-Sharing-Funktion in Vue auf

Vorwort Vue (ausgesprochen /vjuː/, ähnlich wie vi...

SQL-Implementierung von LeetCode (184. Das höchste Gehalt der Abteilung)

[LeetCode] 184. Abteilung Höchstes Gehalt Die Mit...

So verwenden Sie Makros in JavaScript

In Sprachen werden häufig Makros zur Implementier...

Ursachen und Lösungen für die Front-End-Ausnahme 502 Bad Gateway

Inhaltsverzeichnis 502 Bad Gateway Fehlerbildung ...