vCenter database full – How to purge old data and shrink the SQL Express database

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

Database-Shrink-SQLExprt-004431

  •  Installation von SQL Server Management Studio Express (falls noch nicht vorhanden)

Database-Shrink-SQLExprt-004437

Database-Shrink-SQLExprt-004438

 

Database-Shrink-SQLExprt-004439

Database-Shrink-SQLExprt-004440

Database-Shrink-SQLExprt-004444

  • per vSphere Client auf den vCenter aufwählen – „Administration“ – „vCenter Server Settings“

Database-Shrink-SQLExprt-004432

  • in das Menü „Database Retention Policy“ wechseln

Database-Shrink-SQLExprt-004433

  • Konfiguration, dass Tasks und Events nur für 30 Tage in der Datenbank aufbewahrt werden sollen

Database-Shrink-SQLExprt-004434

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)

Database-Shrink-SQLExprt-004445

  • Stoppen der vCenter Dienste (wenn nicht bereits gecrasht 😉 – Achtung: Downtime!)

Database-Shrink-SQLExprt-004447

Database-Shrink-SQLExprt-004448 Database-Shrink-SQLExprt-004449

  • Anstarten der Datenbankbereinigung (Events und Tasks) über „Databases“ – „VIM_VCDB“ – „Programmability“ – „Stored Procedures“ – „dbo.cleanup_events_tasks_proc“ – Rechte Maustaste – „Execute Stored Procedure“

Database-Shrink-SQLExprt-004450

Database-Shrink-SQLExprt-004451

  • Datenbank „shrink“en über „VIM_VCDB“ – Rechte Maustaste – „Tasks“ – „Shrink“ – „Database“

Database-Shrink-SQLExprt-004453 Database-Shrink-SQLExprt-004454

  • Files „shrink“en über „VIM_VCDB“ – Rechte Maustaste – „Tasks“ – „Shrink“ – „File“

Database-Shrink-SQLExprt-004455

  • Ansicht Größe vCenter Datenbank (VIM_VCDB) nachher

Database-Shrink-SQLExprt-004457

  • vCenter Dienste wieder starten

Database-Shrink-SQLExprt-004500

  • 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!)

Database-Shrink-SQLExprt-004435

  • 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

Senior Consultant & Trainer

teamix GmbH

 

Benjamin Ulsamer

Benjamin Ulsamer ist seit Januar 2011 für die Firma Proact Deutschland GmbH tätig. Im Oktober 2015 wurde er zum Manager Professional Services Region South ernannt. Seit Juni 2017 ist er zudem verantwortlich für die Ausbildung in den Berufen Fachinformatiker/in für Systemintegration, sowie IT-Systemkaufmann/-frau. In den Jahren 2015, 2016 und 2017 hat er für sein Engagement bzgl. Blogging & Wissensvermittlung von VMware die Auszeichnung zum vExpert erhalten.

 
Kommentare

Das ist ein echt guter Beitrag. Viiiiieeelen Dank!!!

Nach dem Shrink sollte man noch die Index Schlüssel der betroffenen Tabellen defragmentieren. In den meisten Fällen dürften das die VPX_EVENT & VPX_EVENT_ARG sein (das sollte man über die eingebauten SQL Reports prüfen bevor man mit dem Ganzen beginnt).

Gruß Mario

Hat super funktioniert! Die Prozedur lief ganz schön lange aber hat geholfen.

Besten Dank für die Hilfe, hat super geklappt, zwar eine Stunde bei etwa 10GB DB gedauert, aber alles bestenns gelaufen. Nach der DB Bereinigung ist die Transaction LOG vollgelaufen, hierzu habe ich folgenden KB Eintrag verwendet:
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1003980
hat ebenfalls gut funktioniert.

Hinterlassen Sie einen Kommentar