Heim >Datenbank >MySQL-Tutorial >Detaillierte Erläuterung des Codes zum Sammeln von Tabelleninformationen während der Überwachung von MySQL (Bilder und Text)
Vielleicht werden Sie oft nach dem monatlichen Datenvolumenwachstum einer bestimmten Tabelle in der Bibliothek im vergangenen Jahr gefragt. Natürlich wäre es einfacher, wenn Sie die Tabellen einzeln nach Monaten aufteilen würden show table status
Wenn es nur eine große Tabelle gibt, müssen Sie wahrscheinlich in der einsamen Nacht, in der sich alle ausruhen, SQL-Statistiken ausführen, weil Sie das können Erhalten Sie nur die aktuellen Tabelleninformationen, historische Informationen können nicht zurückverfolgt werden.
Darüber hinaus müssen Sie als DBA auch das Wachstum des Datenbankspeicherplatzes abschätzen, um die Kapazität zu planen. Zu den Tabelleninformationen, über die wir sprechen, gehören hauptsächlich:
Überauto_increment
achten wir nicht nur darauf, wo das aktuelle Wachstum ist, sondern auch darauf, wie viel freier Speicherplatz im Vergleich zum Maximalwert von int / bigint
steht. Daher wurde die Spalte autoIncrUsage
berechnet, um das aktuell verwendete Verhältnis zu speichern.
Verwenden Sie dann den Python-Client von InfluxDB, um stapelweise in influxdb zu speichern. Ohne InfluxDB wird das Ergebnis json ausgedruckt – dies ist ein Format, das häufig von Überwachungstools wie Zabbix und Open-Falcon unterstützt wird. Der letzte Schritt besteht darin, mit Grafana Diagramme aus der Influxdb-Datenquelle zu zeichnen. Umgebung Für den Betrieb sind Konfiguration3. Verwendung
Geschrieben in der Python 2.7-Umgebung, 2.6 und 3.x wurden nicht getestet. MySQLdb
und influxdb
zwei Bibliotheken erforderlich: $ sudo pip install mysql-python influxdb
settings_dbs.py
Konfigurationsdatei
DBLIST_INFO
: In der Liste werden die zu sammelnden MySQL-Instanztabelleninformationen und die Tupel gespeichert die Verbindungen. Adresse, Port, Benutzername, Passwort
Benutzer benötigen die Berechtigung, die Tabelle auszuwählen, sonst können sie die entsprechenden Informationen nicht sehen.
InfluxDB_INFO
: Influxdb-Verbindungsinformationen, bitte erstellen Sie den Datenbanknamen im Voraus mysql_info
und setzen Sie ihn auf None
. Das Ausgabeergebnis kann JSON sein.
Erstellen Sie Datenbank- und Speicherstrategie auf influxdb
Speicherung für 2 Jahre, 1 Replikatsatz: (Nach Bedarf anpassen)
CREATE DATABASE "mysql_info" CREATE RETENTION POLICY "mysql_info_schema" ON "mysql_info" DURATION 730d REPLICATION 1 DEFAULT
Sehen Sie sich die großen Informationen an, ähnlich wie:
Crontab ausführen
Es kann separat auf dem für die Überwachung verwendeten Server platziert werden, es wird jedoch empfohlen, es auf dem Host auszuführen, auf dem sich die MySQL-Instanz in der Produktionsumgebung befindet aus Sicherheitsgründen.
Allgemeine Bibliotheken führen die Datenmigration nachts durch. Sie können mysql_schema_info.py
vor und nach der Migration ausführen, um sie zu sammeln. Nicht allzu oft empfohlen.
40 23,5,12,18 * * * /opt/DBschema_info/mysql_schema_info.py >> /tmp/collect_DBschema_info.log 2>&1
Diagramm generieren
Import grafana_table_stats.json
unter dem Projekt in das Grafana-Bedienfeld. Der Effekt ist wie folgt:
Tabellendatengröße und Anzahl der Zeilen
Erhöhung der Anzahl der Zeilen pro Tag, Auto_Inkrement-Nutzung
Bei Unterdatenbank und Tabelle kann die globale eindeutige ID nicht in der Tabelle autoIncrUsage berechnet werden
Es ist tatsächlich sehr schwierig zu implementieren. Einfach, das Wichtigste ist, das Bewusstsein für das Sammeln dieser Informationen zu wecken
Sie können das Graphite-Ausgabeformat hinzufügen
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Codes zum Sammeln von Tabelleninformationen während der Überwachung von MySQL (Bilder und Text). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!