Kategorie:Backup

Aus SiteparkWiki
Version vom 8. Januar 2021, 13:43 Uhr von OB (Diskussion | Beiträge) (→‎Backup)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

IES Backup (ab Version 2.1.1)

Konzept

Das hier beschriebene Verfahren garantiert konsistente Datensicherungen des IES zur Laufzeit. Auf diesen Mechanismen basiert auch das Verfahren für ein sog. IES StandBy. Dabei wird ein Mandant auf einem anderen IES synchron gehalten und kann im Notfall aktiviert werden. IES StandBy Mechanismen sind jedoch noch in der frühen Entwicklungsphase.

Ausgeführt werden die Operationen zum Backup über IES-Admin.

Grundsätzlich werden beim IES Backup drei Aktionen unterschieden:

  • backup
    vollständiges Backup aller Daten und Konfigurationen eines Mandanten
  • snapshot
    inkrementelle Sicherung aller Daten eines Mandanten basierend auf dem letzten vollen Backup
  • recover
    reaktivieren von Sicherungen eines Mandanten inkl. aller Daten ohne automatische Übernahme der Konfiguration

Das Backup und allle Snapshots liegen in einem $SITEPARK_BACKUP Verzeichnis. Dieses Verzeichnis kann entweder ein Netzwerklaufwerk sein, oder auf einem Backup-Server gesichert werden. Der Status der Sicherungen wird in einer XML-Datei unterhalb dieses Verzeichnisses gesichert und kann somit zusammen mit den Daten und unabhängig vom IES archiviert werden.

In der Konfiguration des IES kann das Verzeichnis, welches standardmäßig $SITEPARK_HOME/backup ist, über die Property "backupDir" gesetzt werden.


Technische Voraussetzungen

Da das IES Backup auf den binären Logs von MySQL basiert sind mind. die MySQL-Tools

  • mysql
  • mysqldump
  • mysqlbinlog

lokal zu installieren.

Weiterhin sind auf dem MySQL-Server noch folgende Konfigurationen vorzunehmen:

log_bin
muss aktiviert sein
server-id
muss auf einen Wert >1 gesetzt sein
expire_logs_days
sollte bei Einsatz von Replikation gesetzt sein.

Ein großer Teil an SQL-Statements, die der IES lesend auf die Datenbank vornimmt, erfolgt über sog. temporäre Tabellen. Diese sind ein notwendiges und performantes Mittels um Abfragen auf unserem generischen Datenmodell vorzunehmen. Da temp. Tabellen nicht repliziert werden sollten, müssen diese noch entsprechend in der Konfiguration des MySQL-Systems ausgenommen werden.

Hier entsprechende Anweisungen für die MySQL-Konfiguration:

replicate-wild-do-table = %
replicate-ignore-table= %.result
replicate-ignore-table = %.result
replicate-ignore-table = %.Channel%
replicate-ignore-table = %.GeneratableFile%
replicate-ignore-table = %.tmpcheckcon
replicate-ignore-table = %.checkcon
replicate-ignore-table = %.vtmp
replicate-ignore-table = %.queryTmp
replicate-ignore-table = %.historyTmp
replicate-ignore-table = %.templateTmp
replicate-ignore-table = %.contentTmp

Backup

Ein Backup wird pro Mandant ausgeführt und erstellt einen vollständigen MySQL-Dump, eine komplette Kopie der BinDB des Mandanten, optionale, spezifische Daten und die aktuellen Serverdaten.

  • vollständig
  • konsistent mit BinDB (Inkonsistent mit DocumentRoots, diese müssen über klassische Mechanismen gesichert oder bei Bedarf neu generiert werden)
  • benötigen je nach Serverleistung und Datenumfang relativ viel Zeit und Resourcen
  • sollte in regelmäßigen Abständen erstellt werden, wenn der Server nur gering beansprucht wird (z.B. einmal die Woche um 1:00 Uhr Nachts)
  • optional können beim Backup alte MySQL-BINLOG automatisch gelöscht werden (Achtung bei Replikation von MySQL!)

Weitere Information hierzu unter: Backup - Vollständige Sicherung von Mandanten

Snapshot

In regelmäßigen Abständen werden alle Änderungen der Datenbank und der BinDB seit dem letzten Backup bzw. seit dem letzten Snapshot gesichert. Als Basis eines Snapshots dienst aber immer ein vollständiges Backup, da Snapshot auf der Basis von BINLOG-Mechanismen von MySQL aufbauen.

  • inkrementell (nur Differenzen in der Datenbank und der BinDB)
  • konsistent mit BinDB (Inkonsistent mit DocumentRoots)
  • benötigen je nach Zeit zwischen den Snapshots nur geringe Resourcen
  • sollten mehrmals täglich erfolgen

Weitere Information hierzu unter: Snapshot - Inkrementelle Sicherung von Mandanten


Recover

Ein Recover kann jeden gesicherten Stand des IES wieder herstellen. Dabei wird die gewünschte Version interaktiv ausgewählt. Die Summe der Aktionen kann je nach Datenumfang zu einer relativ langen Zeitspanne führen in der der Mandant nicht aktiv ist. Es gelten dabei folgende Regeln:

  • der Mandant wird für die Wiederherstellung vorübergehend deaktiviert
  • es wird stets immer erst das vollständige Backup einspielt (ist u.U. relativ zeitaufwendig!)
  • optional kann die BinDB wieder hergestellt werden (nur notwendig, wenn das Filesystem defekt war)
  • alle Snapshots, bis zu dem gewünschten Zeitpunkt werden nacheinander eingespielt
  • nach einem Wiederherstellung einer alten Version werden mit dem nächsten Snapshot alle Versionen die "zurückgegangen" wurden gelöscht
  • es ist optional möglich einen anderen Ordner mit Daten zum Backup anzugeben
  • im Anschluss werden alle Templates des Mandanten für den Generator neu kompiliert
  • evtl. vorhandene Lucene-Indices werden vollständig neu erzeugt

Weitere Information hierzu unter: Recover - Wiederherstellung einer Sicherung eines Mandaten


Gesicherte Daten

Bei Sicherung eines Mandant werden stets folgende Daten berücksichtigt:

  • SQL-Zugangsdaten über die Konfiguration
  • optionale, mandantenspezifische Daten unterhalb von $SITEPARK_HOME/clients/$CLIENT_ID ($CLIENT_ID ist analog zur BinDB)
  • alle Daten (bei Snapshots Änderungen) der BinDB
  • alle Daten der jeweiligen Datenbank (auch Remote) als gezippte, (bei Snapshots inkrementelle) SQL-Anweisungen

Bei Backups oder Snapshots werden neben den oben genannten Daten stets auch folgende Daten gesichert:

  • Die IES-Konfiguration: ies-server.xml (alle weiteren Daten der Konfiguration können nicht zur Laufzeit verändert werden und sind somit in der Sicherung von $SITEPARK_HOME enthalten)
  • Alle Moduldaten unterhalb von $SITEPARK_DATA/modules


Regeln für das Backup

Auf dem IES-Server

  • Das Verzeichnis $SITEPARK_HOME muss unabhängig von den IES-Datensicherungen regelmäßig erfolgen
  • Das Verzeichnis $SITEPARK_DATA (i.d.R. $SITEPARK_HOME/data) sollte vom Backup ausgenommen werden
  • Das Verzeichnis $SITEPARK_BACKUP (i.d.R. $SITEPARK_HOME/backup) sollte entweder direkt auf einem externen System liegen, oder zusammen mit dem Verzeichnis $SITEPARK_HOME gesichert werden.
  • Das Verzeichnis $SITEPARK_BACKUP (und evtl. auch $SITEPARK_HOME) sollten nach jedem Snapshot oder Vollbackup gesichert werden
  • Weiterhin wird empfohlen folgende Konfigurationen regelmäßig zu sichern:
    • Cronjobs
    • Apache-Konfiguration (und Module)
    • MySQL-Konfiguration
    • weitere System-relevante Informationen


Nach dem Einspielen von Backups oder Snapshots werden zunächst alle SQL-Zugangsberechtigungen pro Mandat wieder hergestellt bzw. aktualisiert. Danach werden alle Templates neu kompiliert und die Indices neu generiert.

Auf den Webservern

  • Das Verzeichnis data der Webnodes (i.d.R. $SITEPARK_HOME/ies-webnode/data) sollte regelmäßig gesichert werden
  • Das Verzeichnis config der Webnodes (i.d.R. $SITEPARK_HOME/ies-webnode/data) sollte regelmäßig gesichert werden
  • Cronjobs
  • Apache-Konfiguration (und Module)
  • weitere System-relevante Informationen

Beispiel für Konfiguration des Backups via CRON

  • Vollständige Sicherung jeden Sonntag um 2:00 Uhr
  • Inkrementelle Sicherung täglich zu jeder halben Stunde

Der Ordner mit den Sicherungen (hier: /srv/sitepark/backup) sollte spätestens Sonntags vor 1:40 Uhr auf ein externes Laufwerk gesichert werden, da das vollständige Backup alle vorhandenen Sicherungen löscht.

Struktur von Cronjobs unter Linux:

* * * * * auszuführender Befehl
┬ ┬ ┬ ┬ ┬
│ │ │ │ │
│ │ │ │ └──── Wochentag (0-7) (Sonntag =0 oder =7)
│ │ │ └────── Monat (1-12)
│ │ └──────── Tag (1-31)
│ └────────── Stunde (0-23)
└──────────── Minute (0-59)

Vollständiges Beispiel:

# m h  dom mon dow   command

# ies backup
0   2   *   *   0   /usr/bin/iesadmin backup --all --purge --force > /dev/null

# ies snapshots
30   *   *   *   *  /usr/bin/iesadmin snapshot --all --force > /dev/null

Diese Kategorie enthält zurzeit keine Seiten oder Medien.