Backup und Datensicherung von Plone-Systemen Vortragender: Christian Becker
Schwerpunkte Einleitung Arbeitsweise von repozo Konfigurationsvariante des collective.recipe.backup BLOBs Quellen Fragen
Schwerpunkte Einleitung Datensicherung repozo collective.recipe.backup Arbeitsweise von repozo Konfigurationsvariante des collective.recipe.backup BLOBs Quellen Fragen
Datensicherung kontinuierliche Datensicherungen (Backups) von Produktionssystemen sind unerlässlich empfehlenswert ist es, Datensicherungen dezentral und unzugänglich aufzubewahren für Plone empfiehlt es sich für die Erstellung von Datensicherungen repozo zu verwenden alternative Lösungen sind z.b. eigene Scripte in Verbindung mit Cron-Jobs zu verwenden
Schwerpunkte Einleitung Datensicherung repozo collective.recipe.backup Arbeitsweise von repozo Konfigurationsvariante des collective.recipe.backup BLOBs Quellen Fragen
repozo (1) mitgeliefertes Script für die Daten(rück)sicherung kopiert Data.fs in beliebiges Verzeichnis lässt sich auch im laufenden Betrieb anwenden vielseitig konfigurierbar und einsetzbar (inkrementelle Datensicherung, datumsabhängige Rücksicherung) Aufruf über die Konsole: $ <Plone>/zinstance/bin/repozo Parameter
repozo (2) Parameter für repozo: Sicherung [B] oder Rücksicherung [R]? Verzeichnis, in den die Sicherungen gespeichert sind/werden sollen [r] Sicherung: Datei [f] die gesichert werden soll inkrementelle/vollständige [F] Datensicherung (optional) MD5-Konsistenzcheck [Q] nur für letzten Zustand (optional) Komprimierung [z] der Datensicherung (optional)
repozo (3) Parameter für repozo (fortsetzung): Rücksicherung: bestimmtes Rücksicherungsdatum [D] verwenden (optional) Pfad und Ausgabedatei [o]
Schwerpunkte Einleitung Datensicherung repozo collective.recipe.backup Arbeitsweise von repozo Konfigurationsvariante des collective.recipe.backup BLOBs Quellen Fragen
collective.recipe.backup (1) recipe = Rezept -> Vorgehensbeschreibung hier: ausführbare Dateien für die Verwendung von repozo erzeugen/verwenden Ausführbare Dateien durch c.r.b.:./backup ((inkrementelles) Backup)./restore ((inkrementelle) Rücksicherung)./snapshotbackup (vollständiges Backup)./snapshotrestore (vollständige Rücksicherung)
collective.recipe.backup (2) c.r.b. erlaubt es, für die ausführbaren Dateien weitere Konfigurationen vorzunehmen, z.b.: Anzahl der gespeicherten Backups festlegen Data.fs in verschiedene Backupdateien splitten (z.b. catalog.fs) Verzeichnis für Backupdatei aus Dateisystem wählen
Schwerpunkte Einleitung Arbeitsweise von repozo Konfigurationsvariante des collective.recipe.backup BLOBs Quellen Fragen
Arbeitsweise von repozo (1) Sichern (vollständig [F]): Anfang und letzte erfolgreiche Transaktion als Dateipositon von Data.fs ermitteln Erstellen der Zieldatei im Zielverzeichnis byteweise kopieren von Quelldatei in Zieldatei danach Konsistenzcheck der Zieldatei geöffnete Dateien schließen Zieldatei Umbenennen YYYY-MM-DDD-HH-MM- SS.fs(z) neue dat-datei erzeugen alte Sicherungen löschen
Arbeitsweise von repozo (2) Sichern (inkrementell): Dateizeiger an Position nach letztem inkrementellen Backup setzen (durch dat-datei gespeichert) Differenz zu aktueller Quelldatei in Bytes ermitteln Erstellen einer neuen Datei (Zieldatei) byteweise kopieren ab Dateizeiger von Quelldatei nach Zieldatei Konsistenzcheck der Zieldatei geöffnete Dateien schließen Umbenennen der Zieldatei: YYYY-MM-DDD-HH-MM- SS.deltafs(z)
Arbeitsweise von repozo (3) Recovery [R r]: Rücksichern der durch Parameter r angegebenen Datei nach stdout (oder in durch o angegebene Zieldatei) Rücksichern: letzte vollständige Sicherungskopie suchen (ggf. an/bevor übergebenem Datum) leeres Sicherungsziel (Datei) erzeugen Sicherungsquelle ggf. dekomprimieren und die enthaltenen Daten anschließend ins Sicherungsziel byteweise schreiben
Schwerpunkte Einleitung Arbeitsweise von repozo Konfigurationsvariante des collective.recipe.backup Grundlegendes Installation des collective.recipe.backup Konfigurationen Zentrale Konfiguration der erzeugten Dateien Cron job Integration Backup Mehrerer fs-dateien BLOBs Quellen Fragen
Grundlegendes durch c.r.b. werden folgende Dateien erzeugt: backup restore snapshotbackup snapshotrestore sind je für Standardaktionen vorgesehen individuelle Konfiguration in jeweiligen Dateien möglich zentrale Konfiguration der Dateien in buildout.cfg eigene Varianten ausführbarer Dateien ebenfalls möglich
Installation von collective.recipe.backup 1. repozo muss in <Plone>/zinstance/bin vorhanden sein 2. alle Plone-Instanzen stoppen 3. <Plone>/zinstance/buildout.cfg öffnen 4. dolgende Ergänzungen in buildout.cfg speichern: [buildout] parts = backup [backup] recipe = collective.recipe.backup 5. buildout ausführen ( sudo bei root-installation): $ sudo <Plone>/zinstance/bin/buildout 6. c.r.b. Dateien wurden in <Plone>/zinstance/bin erzeugt 7. Aufruf aller vier erzeugten Dateien per Konsole, z.b.: $ sudo <Plone>/zinstance/bin/backup
Konfigurationen Konfigurationsoptionen: location (Quellverzeichnis [var/backups]) keep (Mindestanzahl vollständiger Backups [2]) datafs (Quelle der Data.fs [var/filestorage/data.fs]) full (vollständiges Backup [false]) debug (Detailinformationen [false]) snapshotlocation (Speicherort [var/snapshotbackups]) gzip (Backup packen [true]) additional_filestorages (weitere fs-dateien aus data.fs sichern (z.b. catalog.fs)) enable_snapshotrestore (Script für direktes Rücksichern erzeugen [true])
Zentrale Konfiguration der erzeugten Dateien folgende Änderungen in der buildout.cfg notwendig: [buildout] parts = backup [backup] recipe = collective.recipe.backup location = ${buildout:directory}/myproject keep = 2 datafs = <Pfad zur Data.fs> full = true debug = true snapshotlocation = <Pfad für Snapshotbackups> gzip = false enable_snapshotrestore = true Konfigurationen gelten für alle (vier) erzeugten Dateien
Cron-Job Integration Integration in die Cron-Tabelle bei Linux möglich durch folgende Eintragung buildout.cfg: [backupcronjob] recipe = z3c.recipe.usercrontab times = 0 12 * * * command = ${buildout:directory}/bin/backup dadurch können Backups vom Betriebssystem regelmäßig ausgeführt werden times ist für die Zeitplanung wichtig command gibt das Kommando an, welches auszuführen ist
Backup Mehrerer fs-dateien Aufteilung der Data.fs in mehrere fs-dateien möglich (z.b. catalog.fs portal_catalog) dadurch Ausführung separater Backups möglich/nötig additional_filestorages Backups werden nacheinander durchgeführt gesicherte Datenbanken möglicherweise Asynchron [buildout] parts = backup [backup] recipe = collective.recipe.backup additional_filestorages = catalog Separate Verzeichnisse anderes
Schwerpunkte Einleitung Arbeitsweise von repozo Konfigurationsvariante des collective.recipe.backup BLOBs Quellen Fragen
BLOBs (1) BLOB = Binary Large Object z.b.: Bilder, Audiodateien, Videos werden standardmäßig in Data.fs gespeichert Größe der Data.fs nimmt dadurch schnell zu durch plone.app.blob erhält Plone einen BLOB-Support BLOBs werden dadurch separat nach [<Plone>/var/blobstorage] gespeichert
BLOBs (2) Problem 1: Dateigröße von Data.fs nimmt durch BLOBs schnell zu vollständige Backups dauern länger Lösung 1: Speichern von BLOBs außerhalb der Data.fs im Dateisystem (plone.app.blob) Problem 2: collective.recipe.backup umfasst bei der Sicherung nur die Data.fs keine extern gespeicherten BLOBs Lösung 2: zusätzliches (eigenes) Script verwenden Änderung dieses Umstandes in einer zukünftigen Version von c.r.b geplant [q3]
Quellen Anwendungsbeschreibung von repozo.py: [q1] http://www.plone-entwicklerhandbuch.de/ploneentwicklerhandbuch/produktivserver/backup-der-zodb.html Sicherungs- und Synchronisationstools für Plone: [q2] http://amantke.de/index2.php?option=com_content&id=42 offizielle Seite des collective.recipe.backup: [q3] http://pypi.python.org/pypi/collective.recipe.backup#backup Dokumentationen für ZODB; FileSystemStorage; plone.app.blob: [q4] http://plone.org/documentation/kb/introduction-to-the-zodb/anintroduction-to-the-zodb [q5] http://plone.org/products/filesystemstorage [q6] http://plone.org/products/plone.app.blob Arbeitsweise und Aufbau von repozo.py: [q7] repozo.py
Fragen????
Anmerkung Im Vortrag am 14.12.2010 wurde erwähnt, dass die Datei Data.fs auch per URL rückgesichert werden kann. Dies ist nicht der Fall, es existiert lediglich eine URL zu einer GUI (eine ZMI-Unterseite), um die aktuell genutzte Data.fs zu packen.