Start · Sprachen · PHP · Referenz · rrd_restore

rrd_restore

Funktion

Stellt eine RRD-Datei aus einem zuvor erstellten XML-Dump wieder her.

Kategorie: misc

Signatur

rrd_restore(string $xml_file, string $rrd_file, int $options = 0): bool

Beschreibung

rrd_restore() liest einen XML-Dump einer RRD-Datenbank (Round-Robin Database) und schreibt die enthaltenen Daten in eine neue oder vorhandene RRD-Datei zurück. Die Funktion ist das Gegenstück zu rrd_dump(), welches eine RRD-Datei in ein portables XML-Format exportiert.

Der typische Anwendungsfall ist die plattformübergreifende Migration von RRD-Daten: Da RRD-Binärdateien architekturabhängig (z. B. unterschiedliche Byte-Reihenfolge auf 32-/64-Bit-Systemen) sind, empfiehlt sich der Umweg über XML bei Backups oder Systemwechseln. Mit rrd_dump() wird die Binärdatei in XML serialisiert und anschließend mit rrd_restore() auf dem Zielsystem rekonstruiert.

Der Parameter $options erlaubt das Setzen von Flags, die das Verhalten beim Wiederherstellen steuern, z. B. ob vorhandene Dateien überschrieben werden sollen. Entsprechende Konstanten beginnen mit RRD_RESTORE_*.

Die Funktion setzt die PECL-Erweiterung rrd voraus, die auf der PECL-Seite verfügbar ist und gegen die librrd-Bibliothek gelinkt wird.

Parameter

Name Typ Default Beschreibung
$xml_file Pflicht string Pfad zur XML-Quelldatei, die mit rrd_dump() oder dem Kommandozeilen-Tool rrdtool dump erzeugt wurde.
$rrd_file Pflicht string Pfad zur RRD-Zieldatei, die erstellt oder überschrieben werden soll.
$options int 0 Optionale Bitmaske aus RRD_RESTORE_*-Konstanten, z. B. RRD_RESTORE_RANGE_CHECK, um Wertebereichsprüfungen zu aktivieren.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn die RRD-Datei erfolgreich wiederhergestellt wurde. Im Fehlerfall wird false zurückgegeben; eine Fehlerbeschreibung kann anschließend mit rrd_error() abgefragt werden.

Beispiele

RRD-Datei aus XML-Dump wiederherstellen

<?php
// XML-Dump einer vorhandenen RRD-Datei erstellen
$dumpResult = rrd_dump('/var/rrd/traffic.rrd', '/tmp/traffic_backup.xml');

if ($dumpResult === false) {
    echo 'Dump fehlgeschlagen: ' . rrd_error();
    exit(1);
}

// RRD-Datei aus dem XML-Dump wiederherstellen
$restoreResult = rrd_restore('/tmp/traffic_backup.xml', '/var/rrd/traffic_restored.rrd');

if ($restoreResult === false) {
    echo 'Wiederherstellung fehlgeschlagen: ' . rrd_error();
} else {
    echo 'RRD-Datei erfolgreich wiederhergestellt.';
}
RRD-Datei erfolgreich wiederhergestellt.

Migration einer RRD-Datei auf ein anderes System

<?php
// Auf dem Quellsystem: XML-Export erstellen
$sourceRrd  = '/opt/monitoring/cpu.rrd';
$xmlExport  = '/tmp/cpu_export.xml';

if (!rrd_dump($sourceRrd, $xmlExport)) {
    die('Export fehlgeschlagen: ' . rrd_error());
}

// XML-Datei per SCP o. ä. auf Zielsystem übertragen (hier simuliert)
// Auf dem Zielsystem: RRD-Datei wiederherstellen
$targetRrd = '/opt/monitoring/cpu_new.rrd';

if (rrd_restore($xmlExport, $targetRrd, RRD_RESTORE_RANGE_CHECK)) {
    echo "Migration erfolgreich: {$targetRrd} wurde erstellt.";
} else {
    echo 'Fehler bei der Wiederherstellung: ' . rrd_error();
}
Migration erfolgreich: /opt/monitoring/cpu_new.rrd wurde erstellt.

// Wichtig · Fallstricke

Versionierung: Die Funktion ist Teil der PECL-Erweiterung rrd und nicht im PHP-Kern enthalten. Die Verfügbarkeit hängt von der installierten Version der librrd-Bibliothek ab.

Berechtigungen: PHP muss Schreibzugriff auf das Verzeichnis der Ziel-RRD-Datei besitzen. Fehlt dieser, schlägt die Wiederherstellung stillschweigend fehl; stets rrd_error() auswerten.

Überschreiben: Existiert die Zieldatei bereits, wird sie je nach Konfiguration und $options überschrieben. Im produktiven Einsatz sollte die Zieldatei vorher gesichert werden.