Tags: vCenter, Datenbanken, Troubleshooting
Eine übervolle Datenbank kann die Dienste von vCenter erheblich beeinträchtigen. Idealerweise beugt man dem übermäßigen Anwachsen des Datenvolumens durch entsprechende Maßnahmen vor. Wenn dieser Fall aber trotzdem eintritt, dann lässt sich die Datenbank mit Hilfe von VMware-eigenen Scripts bereinigen.
Bei der Bereitstellung des vCSA kann es zu Problemen kommen, wenn die Datenbank des Quell-Systems zu groß ist. Ein Symptom beim vCSA-Upgrade besteht dann darin, dass die die Tiny- oder Small-Konfiguration für die Ziel-Appliance nicht angeboten wird. Das Gleiche kann auch bei der Migration von einem Windows-vCenter passieren. In beiden Fällen ist ein Bereinigen der Quell-vCSA notwendig
Zu viele historische Daten
Als Problem erweist sich in der Regel eine zu große Menge von historischen Daten, etwa für Ereignisse, Aufgaben oder Statistiken. Sind die Protokolldaten in der vCenter Server-Datenbank zu umfangreich, dann wird der vCenter Server-Dienst möglicherweise gar nicht gestartet.
VMware empfiehlt daher, historische Datensätze selektiv zu bereinigen, und stellt dazu passende SQL-Scripte für den jeweiligen Datenbanktyp (SQL Server, Oracle, PostgresQL) zum Download bereit.
Datenbank sichern
Für die vCenter-Appliance 6.0 geht man dazu wie folgt vor. Zunächst stoppt man den Center-Server an der Appliance-Shell mittels:
service-control --stop vmware-vpxd
Danach empfiehlt es sich, die komplette Quelldatenbank zu sichern. Hierzu bietet VMware ein passendes Backup-Tool für Windows vCenter sowie die Appliance in Form einer ZIP-Datei zum Download an, hier die Linux-Variante. Diese speichert und entpackt man in einem beschreibbaren Verzeichnis, etwa in /tmp.
Danach macht das darin enthaltene Python-Programm backup_lin.py ausführbar:
chmod 700 /tmp/backup_lin.py
Dieses lässt man dann laufen und gibt als Ziel eine Backup-Datei an, zum Beispiel
python /tmp/backup_lin.py -f /tmp/backup_VCDB.bak
Das zugehörige Restore-Script liegt für alle Fälle im gleichen Pfad. In der Praxis würde man vermutlich aber eher einen externen Pfad für die Backup-Datei wählen, schon um etwaigen Problemen mit der Festplattengröße aus dem Weg zu gehen.
Datensätze mit SQL-Scripts löschen
Nun ist es gefahrlos möglich, die Datenbereinigung mit Hilfe der von VMware bereitgestellten SQL-Scripts auszuprobieren, hier am Beispiel von PostgresQL. Das zugehörige Script findet sich hier.
Die SQL-Scripts von VMware enthalten drei Hauptparameter:
TaskMaxAgeInDays: Alle Aufgaben (Tasks), die älter sind als der Tag TaskMaxAgeInDays“, werden gelöscht.
EventMaxAgeInDays: Alle Ereignisse, die älter als EventMaxAgeInDays sind, werden gelöscht.
StatMaxAgeInDays: Alle Statistiken, die älter als StatMaxAgeInDays sind, werden gelöscht.
Die möglichen Werte sind:
-1 | Überspringt die Löschung der jeweiligen historischen Daten. Beispiel: TaskMaxAgeInDays = -1 bedeutet, dass keine Aufgabensätze gelöscht werden. |
0 | Löscht alle historischen Daten für die jeweilige Komponente. Beispiel: TaskMaxAgeInDays = 0 löscht alle Aufgabensätze. |
1 oder höher | Löscht Daten, die älter als die von Ihnen eingegebene Zahl sind, in Tagen. Beispiel: TaskMaxAgeInDays = 10 behält die in den letzten 10 Tagen erfassten Aufgaben und löscht alle zuvor erfassten Datensätze |
Zum Ausführen des Scripts braucht man den psql-Client. Hier übergeben wir gleich alle drei Parameter:
/opt/vmware/vpostgres/current/bin/psql -U <vCenter-Server-database-user> -v TaskMaxAgeInDays=task-days -v EventMaxAgeInDays=event-days-v StatMaxAgeInDays=stat-days -d <database-name> -t -q -f <download-path/>2110031_Postgres_task_event_stat.sql
Passwort für die Datenbank auslesen
Um das Kommando ausführen zu können, bedarf es außerdem der Datenbank-Credentials. Hierzu sucht man (als User root) die Datei vcdb.properties (in der Regel unter /etc/vmware-vpx) und öffnet sie in einem Texteditor oder schaut einfach mit less oder cat hinein. Das File enthält das Password für den Database-User (vc).
Man kann durch die Kombination mit grep und awk auch direkt das Password extrahieren:
cat /etc/vmware-vpx/vcdb.properties | grep "password =" | awk '{print $3}'
Den Datenbanknamen (in der Regel VCDB) bekommt man durch Blick in die Datei /etc/vmware-vpx/embedded_db.cfg heraus:
cat /etc/vmware-vpx/embedded_db.cfg
Danach steht einem Test der Bereinigung nichts im Wege:
/opt/vmware/vpostgres/current/bin/psql -U vc -v TaskMaxAgeInDay=10 -v EventMaxAgeInDays=10 -v StatMaxDaysInDays=10 -d VCDB -t -q -f /tmp/2110031_Postgres_task_event_stat.sql
Abschließend kann man den vpxd-Daemon wieder starten:
service-control –start vmware-vpxd
Täglich Know-how für IT-Pros mit unserem Newsletter
Thomas Drilling arbeitet seit mehr als 20 Jahren selbständig als Redakteur und Autor für viele ehemalige und aktuelle IT-Magazine sowie Blogs. Thomas ist zudem Buchautor und IT-Consultant.
Seit 5 Jahren ist Thomas neben seiner journalistischen Tätigkeit hauptberuflicher, selbständiger IT-Trainer für VMware und Microsoft.
Seine Themenschwerpunkte sind Virtualisierung und Cloud Computing, speziell VMware, Amazon Web Services, Google Cloud und Microsoft Azure. Thomas ist zertifizierter VMware Professional, Advanced Professional und wurde von VMware in den Jahren 2016, 2017, 2018, 2019 und 2020 mit dem Blogger-Status vExpert ausgezeichnet.
Thomas ist außerdem zertifizierter AWS Solutions Architect, Sysops Engineer und Devops Engineer sowie Microsoft Certified Azure Administrator.
Thomas führt aktuell jeden zweiten Montag einen 4-tägigen Grundlagenkurs in Cloud Computing mit AWS via Zoom-Meeting durch. Weitere Informationen und Anmeldung über sein AWS-Blog.
Ähnliche Beiträge
- Größe der vCenter-Datenbank kontrollieren: Statistiken und Aufbewahrungsfristen konfigurieren
- WSUS-Bereinigung bricht ab: Timeout für Datenbank und IIS erhöhen
- VMware vCenter mit dem vSphere Diagnostic Tool analysieren
- Zu wenig Speicherplatz: vCenter mehr Storage zuweisen
- Lösung: vMotion ist im vSphere Client ausgegraut
Weitere Links