Viele Kunden installieren in der Praxis für VMware vSphere und Horizon View Umgebungen ihren vCenter zu Beginn mit einer SQL Express Datenbank. Die Installation ist einfach (da inklusive) und die Performance absolut in Ordnung. Offiziell sind mit einer SQL Express Datenbank allerdings nur 5 Hosts und 50 virtuelle Maschinen supportet.
Technisch spricht nichts dagegen, auch mehr Hosts bzw. mehr virtuelle Maschinen auf einer Micrososft SQL Express Instanz laufen zu lassen. Das Problem ist lediglich das Datenbanklimit von 4GB bei einer Microsoft SQL Express 2005 bzw. 10GB bei einer Micrososoft SQL Express 2008 R2 Datenbank. Läuft die Datenbank voll, "steht" der vCenter bzw. der Service lässt sich nicht mehr starten.
In den folgenden Schritten möchte ich aufzeigen, wie man die vCenter Datenbank "klein" halten kann bzw. immer wieder bereinigen kann.
HINWEIS: Alle Schritte sind mit weiteren Details im VMware Knowledgebase Artikel 1025914 Purging old data from the database used by VMware vCenter Server 4.x and 5.x erläutert.
In der Praxis stellte sich heraus, dass der Hauptgrund für eine "aufgeblähte" Datenbank die Events und Tasks sind, die in der Datenbank standardmäßig für 180 Tage (6 Monate!) aufbewahrt werden. (Im Horizon View Umfeld noch stärker ausgeprägt, da immer wieder neue VMs ausgerollt, gelöscht, "refresh"ed etc. werden) In den folgenden Schritten möchte ich zeigen, wie man die Vorhaltezeit auf 30 Tage umstellt, die "veralteten" Events und Tasks aus der Datenbank entfernt und die Datenbank entsprechend wieder "shrink"t.
- Ansicht Größe vCenter Datenbank (VIM_VCDB) vorher
http://benjaminulsamer.files.wordpress.com/2014/06/database-shrink-sqlexprt-004431.jpg
- Downloaden des entsprechenden SQL Management Studio Express (falls noch nicht vorhanden)
- Microsoft SQL Server Management Studio Express 2005
- Microsoft SQL Server Management Studio Express 2008 R2
- Installation von SQL Server Management Studio Express (falls noch nicht vorhanden)
https://benjaminulsamer.files.wordpress.com/2014/06/database-shrink-sqlexprt-004437.jpg
http://benjaminulsamer.files.wordpress.com/2014/06/database-shrink-sqlexprt-004438.jpg
http://benjaminulsamer.files.wordpress.com/2014/06/database-shrink-sqlexprt-004439.jpg
http://benjaminulsamer.files.wordpress.com/2014/06/database-shrink-sqlexprt-004440.jpg
http://benjaminulsamer.files.wordpress.com/2014/06/database-shrink-sqlexprt-004444.jpg
- per vSphere Client auf den vCenter aufwählen - "Administration" - "vCenter Server Settings"
http://benjaminulsamer.files.wordpress.com/2014/06/database-shrink-sqlexprt-004432.jpg
- in das Menü "Database Retention Policy" wechseln
http://benjaminulsamer.files.wordpress.com/2014/06/database-shrink-sqlexprt-004433.jpg
- Konfiguration, dass Tasks und Events nur für 30 Tage in der Datenbank aufbewahrt werden sollen
https://benjaminulsamer.files.wordpress.com/2014/06/database-shrink-sqlexprt-004434.jpg
HINWEIS: Die Einstellungen können nur vorgenommen werden, wenn der vCenter Dienst noch läuft. Sollte die vCenter Datenbank bereits vollgelaufen sein, muss die Retention per SQL Management Studio gesetzt werden:
- per SQL Management Studio auf die SQL Datenbank einwählen
- Databases - VIM_VCDB - Tables
- Rechte Maustaste "dbo.VPX_PARAMETER" - "Open" bzw. "Edit Top 200 Rows"
- Ändern von event.MaxAge auf 30
- Ändern von event.MaxAgeEnabled auf true
- Ändern von task.MaxAge auf 30
- Ändern von task.MaxAgeEnabled auf true
- Aufwahl auf die vCenter Datenbank per SQL Management Studio Express (wenn nicht bereits in vorherigem Schritt geschehen)
http://benjaminulsamer.files.wordpress.com/2014/06/database-shrink-sqlexprt-004445.jpg
- Stoppen der vCenter Dienste (wenn nicht bereits gecrasht - Achtung: Downtime!)
http://benjaminulsamer.files.wordpress.com/2014/06/database-shrink-sqlexprt-004447.jpg
http://benjaminulsamer.files.wordpress.com/2014/06/database-shrink-sqlexprt-004448.jpg
http://benjaminulsamer.files.wordpress.com/2014/06/database-shrink-sqlexprt-004449.jpg
- Anstarten der Datenbankbereinigung (Events und Tasks) über "Databases" - "VIM_VCDB" - "Programmability" - "Stored Procedures" - "dbo.cleanup_events_tasks_proc" - Rechte Maustaste - "Execute Stored Procedure"
http://benjaminulsamer.files.wordpress.com/2014/06/database-shrink-sqlexprt-004450.jpg
http://benjaminulsamer.files.wordpress.com/2014/06/database-shrink-sqlexprt-004451.jpg
- Datenbank "shrink"en über "VIM_VCDB" - Rechte Maustaste - "Tasks" - "Shrink" - "Database"
http://benjaminulsamer.files.wordpress.com/2014/06/database-shrink-sqlexprt-004453.jpg
http://benjaminulsamer.files.wordpress.com/2014/06/database-shrink-sqlexprt-004454.jpg
- Files "shrink"en über "VIM_VCDB" - Rechte Maustaste - "Tasks" - "Shrink" - "File"
http://benjaminulsamer.files.wordpress.com/2014/06/database-shrink-sqlexprt-004455.jpg
- Ansicht Größe vCenter Datenbank (VIM_VCDB) nachher
http://benjaminulsamer.files.wordpress.com/2014/06/database-shrink-sqlexprt-004457.jpg
- vCenter Dienste wieder starten
- im Nachgang über VI-Client - "Administration" - "vCenter Server Settings" - "Statistics" prüfen, dass das Loglevel im vCenter auf Statistics Level 1 steht (wenn nicht von einer anderen Applikation explizit anders gewünscht!)
http://benjaminulsamer.files.wordpress.com/2014/06/database-shrink-sqlexprt-004500.jpg
- Tipp: Die Größe der SQL Datenbank des vCenters im SQL Express Umfeld bitte immer auf Füllstand überwachen, damit rechtzeitig reagiert werden kann. (z.B. per zusätzlichem Check in vorhandener Überwachungssoftware)
- Update:Beim Umstellen auf die 30 Tage mit automatischem Cleanup bei den Tasks und Events kann es passieren, dass das SQL Log File vollläuft. Entweder das Recovery Model des SQL umstellen und regelmäßig SQL Backups fahren oder die Einstellung mit den 30 Tagen und Cleanup wieder nach erfolgreicher Bereinigung und "Shrink" auf 180 Tage ohne die "Haken" in der GUI zurücksetzen. Dann aber unbedingt monitoren
- I wish I could be a Virtual Machine -
Benjamin Ulsamer