Sicherzustellen, dass die Datenbank fehlerfrei ist, ist eines der kritischen und wichtigen Dinge, die ein Datenbankadministrator tun muss. Wenn wir die Wartung der Datenbank vernachlässigen, besteht eine höhere Wahrscheinlichkeit, dass wir auf ein Problem stoßen; B. ein Datenbankleistungsproblem, das durch eine Arbeitslast verursacht wird, die sich im Laufe der Zeit geändert hat, oder eine Fehlkonfiguration, die zu einer Datenschutzverletzung führt.
Regelmäßige Überprüfung der Konfiguration, Ressourcenauslastung, Sicherungs- und Wiederherstellungsverfahren, Datensicherheit, Abfrageleistung können helfen, Datenbankprobleme zu vermeiden. Wir brauchen eine standardmäßige Datenbankprüfung für unsere Datenbankumgebung, damit wir überwachen können, ob die Datenbank noch unter Kontrolle ist.
Was ist eine Datenbankzustandsprüfung
Eine Datenbank-Gesundheitsprüfung besteht aus einer Reihe von Aufgaben, um den Zustand unserer Datenbank zu überprüfen. Warum müssen wir einen Gesundheitscheck durchführen? Wir müssen alle Probleme oder Anomalien in unserer Datenbankumgebung identifizieren und beheben, unabhängig davon, ob es sich um ein Leistungsproblem, ein Konfigurationsproblem oder etwas handelt, das einen Ausfall verursachen kann.
Wir können den Gesundheitscheck in einige Kategorien unterteilen:
-
Sicherheitsprüfung, um den Zugriff auf die Datenbank zu sperren und sicherzustellen, dass der Datenverkehr von einem vertrauenswürdigen Netzwerk mit den richtigen Rechten kommt Privilegien.
-
Konfigurationsprüfung, um sicherzustellen, dass die Konfiguration die von der Organisation definierten Standardkriterien erfüllt.
-
Leistungsprüfung, um sicherzustellen, dass die Datenbank die Hardwareressourcen nutzt und auf Anwendungen reagiert.
-
Sicherungs- und Wiederherstellungsverfahren, um sicherzustellen, dass die Sicherung, die wir von der Datenbank genommen haben, wiederhergestellt werden kann.
Aus diesen Kategorien können wir aufschlüsseln, was wir in der Datenbank überprüfen müssen. Dies ist sehr wichtig, damit wir jeden Aspekt genau prüfen können. Zum Beispiel:
-
Datenbanksicherheit
-
Vergleichen Sie den Benutzer und die Berechtigungen in der Datenbank mit dem Zugriff auf die Benutzermatrix, den wir haben
-
Überprüfen Sie die Whitelist-IP-Adresse in der Datenbank, ob der Datenverkehr von einem vertrauenswürdigen Netzwerk kommt
-
Stellen Sie sicher, dass die Audit-Protokollierung der Datenbank aktiviert ist
-
Konfigurationsprüfung
-
Prüfen Sie, ob SSL bereits vorhanden ist
-
Stellen Sie sicher, dass die Datenbankkonfiguration korrekt ist (sowohl Berechtigung als auch Besitz)
-
Leistungsprüfung
-
Cache-Trefferquote der Datenbank prüfen
-
Stellen Sie sicher, dass die Datenbankverbindung weiterhin ausreichend ist, um den Datenverkehr zu bewältigen
-
Sicherungs- und Wiederherstellungsverfahren
-
Richtiger Backup-Zeitplan, der das vereinbarte RPO liefert
-
Stellen Sie sicher, dass wir Sicherungen testen, damit wir wissen, dass die Daten wiederherstellbar sind
Basierend auf der obigen Liste können wir ein Skript erstellen, um diese Elemente auf jedem Datenbanktyp (z. B. MySQL, PostgreSQL, MongoDB) zu überprüfen. Jeder Datenbanktyp hat offensichtlich unterschiedliche Befehle.
Automatisierung von Datenbank-Gesundheitsprüfungen
Wir möchten keine sich wiederholende Aufgabe wöchentlich oder monatlich ausführen, die Datenbank-Gesundheitsprüfung ist eine zeitaufwändige Aufgabe. Wir führen das Skript auf jedem Datenbankknoten aus, sodass uns die Automatisierung der Zustandsprüfungen einiges an Zeit spart.
Basierend auf der Liste der Zustandsprüfungsskripte können wir ein Bash-Skript erstellen, um die Aufgaben auszuführen und es mit cron zu planen. Unten ist nur ein Beispiel für einen einfachen Datenbank-Zustandsprüfbericht:
#!/bin/sh
# Simple database check report
username = "audit_user"
password = "pwd001"
hostname = "db01-payment"
mycnf = "/etc/mysql/my.cnf"
dt=$(date '+%d/%m/%Y %H:%M:%S');
audit_name = "MySQL_Healthcheck_audit_report_"$dt
# check the queries
/bin/mysql -h $hostname -u $username -p $password --skip-column-names -B -e "SHOW STATUS LIKE 'Queries'" > $audit_name
# check open table cache hit ratio
/bin/mysql -h $hostname -u $username -p $password --skip-column-names -B -e "SHOW STATUS LIKE 'Table_open_cache_hits'" >> $audit_name
# check the ssl session mode
/bin/mysql -h $hostname -u $username -p $password --skip-column-names -B -e "SHOW STATUS LIKE 'Ssl_session_cache_mode'" >> $audit_name
# check the buffer pool size
cat $mycnf | grep "innodb_buffer_pool_size" >> $audit_name
#check ssl key in my.cnf
cat $mycnf | grep "ssl_key" >> $audit_name
# check permission of my.conf
ls -ltr $mycnf >> $audit_name
Zustandsprüfungen können auch durch Konfigurationsmanagement-Tools wie Ansible, Salt,Chef oder Puppet automatisiert werden.
Automatisierung von Datenbank-Zustandsprüfungen mit ClusterControl
ClusterControl ist eine Betriebsplattform für Datenbanken, sie zeigt Serverzustands-, Leistungs- oder Verfügbarkeitsprobleme innerhalb ihrer Datenbankumgebung, alles von einer zentralen Konsole aus. Es unterstützt die Automatisierung von Datenbank-Zustandsprüfungen durch Betriebsberichte. Sie können die Betriebsberichte sowie Vorfallberichte erstellen oder planen. Es gibt einige Arten von Berichten, wie unten gezeigt:
Der tägliche Systembericht gibt Ihnen einen Einblick in Ihren aktuellen Datenbankcluster und besteht aus verschiedene Informationen wie Knotendienststatus, Sicherungsstatus, Betriebszeit von Knoten, Zusammenfassung der häufigsten Abfragen.
DerPaket-Upgrade-Bericht bietet Ihnen eine Zusammenfassung der verfügbaren Pakete für das Upgrade von der Repository-Manager.
Bericht zu Schemaänderungen vergleicht Datenbankänderungen in einer Tabellenstruktur, die zwischen zwei verschiedenen generierten Berichten aufgetreten sind.
Backup-Berichte geben Ihnen Informationen über Backup-Zusammenfassungen und -Details, z. B. das zuletzt erstellte Backup, den Status des Backups, den Status der Backup-Überprüfung und die Aufbewahrungsdauer des Backups.
Neben den Betriebsberichten gibt es auch die Berater, die Ihnen wie folgt Einblicke in CPU, Festplatte, Datenbankverbindungen usw. geben:
Die Benachrichtigungen per E-Mail und Warnungen über konfigurierte Kanäle von Drittanbietern geben Aufschluss über Dinge, die schief gehen (z. B. fehlgeschlagene Sicherungen, nicht wiederherstellbare Sicherungen, Knotenausfälle).
Schema Analyzer liefert Informationen über doppelte/redundante Indizes, Tabellen ohne Primärschlüssel und Tabellen, die die MyISAM-Speicher-Engine verwenden. Redundante Indizes können besonders gut zu kennen sein, da sie die Größe der Datenbank (und der Backups) aufblähen und Aktualisierungen der Tabelle verlangsamen können.