
Es mag einen Bug im Datenbankschema geben, der behoben wurde. Wenn Sie eine ältere IDOUtils-Version aktualisieren, dann müssen Sie außerdem diese Anpassungen manuell ausführen. Wenn Sie rpm/deb-Pakete, lesen Sie bitte die Hinweise und/oder fragen Sie den Maintainer, ob er diese Anpassungen in der Installationsroutine hinzugefügt hat.
Die Update-Dateien finden Sie zusammen mit den Datenbank-Installationsdateien in
/path/to/icinga-src/module/idoutils/db/
Die Syntax ist wie folgt
<rdbm>-upgrade-<version>.sql
wobei <rdbm> mysql, pgsql oder oracle sein kann und <version> zeigt auf die Version, auf die Sie aktualisieren wollen.
![]() |
Anmerkung |
|---|---|
|
Wenn Sie eine ältere Version aktualisieren wollen und zwischen dieser und der aktuellen noch andere Versionen liegen, dann sollten Sie beachten, dass Sie auch die dazwischen liegenden Updates inkrementell installieren müssen! |
Z.B. haben Sie 1.0RC1 installiert und möchten auf 1.0.1 aktualisieren - Sie müssen dann zuerst auf 1.0 Stable updaten und dann die Aktualierung auf 1.0.1 durchführen.
Sichern Sie Ihre aktuelle Datenbank vor der Aktualisierung!
Prüfen Sie die laufende IDOUtils-Version und die Zielversion. Prüfen Sie, ob zwischen diesen beiden Versionen noch andere Versionen liegen und aktualisieren Sie ggf. schrittweise.
Führen Sie die Aktualisierung(en) mit einem Benutzer durch, der über die notwendigen Berechtigungen verfügt. Sie können das upgradedb-Script verwenden, aber das wird nicht empfehlen (betrifft nur MySQL).
$ mysql -u root -p <dbname> < /path/to/icinga-src/module/idoutils/db/mysql-upgrade-<version>.sqlPostgresql
# su - postgres $ psql -U icinga -d icinga < /path/to/icinga-src/module/idoutils/db/pgsql-upgrade-<version>.sqlOracle
# su - oracle $ sqlplus dbuser/dbpass SQL> @oracle-upgrade-<version>.sqlAktualisieren der IDOUtils auf 1.0
Es gab einen Unique-Key-Fehler durch den Fork, der bei einigen Tabellen zu doppelten und nutzlosen Zeilen führt. Dies betrifft die folgenden Tabellen:
timedevents, timedeventqueue
servicechecks
systemcommands
Wenn Sie sich z.B. Definition der Tabelle servicechecks ansehen:
mysql> show create table icinga_servicechecks;
sollten Sie etwa folgendes sehen
PRIMARY KEY (`servicecheck_id`), KEY `instance_id` (`instance_id`), KEY `service_object_id` (`service_object_id`), KEY `start_time` (`start_time`)
Um die o.g. Definition zu etwas wie diesem
PRIMARY KEY (`servicecheck_id`), UNIQUE KEY `instance_id` (`instance_id`,`service_object_id`,`start_time`,`start_time_usec`)
zu ändern, befolgen Sie bitte den folgenden Ablauf!
Wenn Sie von IDOUtils 1.0RC aktualisieren, dann benutzen Sie bitte module/idoutils/db/mysql-upgrade-1.0.sql - wenn Sie von einer älteren Version aktualisieren, dann führen Sie vorher die notwendigen Schritte durch, um auf 1.0RC zu aktualisieren!
Bitte sichern Sie Ihre Datenbank und stoppen Sie ido2db vor der Ausführung des Patches!
/etc/init.d/ido2db stop
mysql -u root -p icinga < /path/to/icinga-src/module/idoutils/db/mysql-upgrade-1.0.sql
Der Patch erledigt das Folgende mit Hilfe von MySQL-Befehlen:
hinzufügen einer temporären Spalte 'active', um die aktualisierte Zeile zu kennzeichnen
ermitteln der benötigten Informationen zweier doppelter Zeilen basierend auf dem unique contraint, aktualisieren der zweiten Zeile und markieren durch first=inactive, second=active
löschen aller als 'inactive' gekennzeichneten Zeilen
entfernen der fehlerhaften Key-Definitionen
hinzüfen des Unique Key
entfernen der temporären Spalte 'active'
Diese Prozedur wird für jede Tabelle durchgeführt, so dass es eine Weile dauern kann, abhängig von Ihren Tabellengrößen und/oder DB-Spezifikationen.
Falls Sie vorher etwas an den Keys verändert haben, dann stellen Sie sicher, dass Sie das gleiche DB-Schema wie in IDOUtils 1.0RC benutzen, andernfalls wird das Script fehlschlagen.
© 2009 Icinga Development Team, http://www.icinga.org