invis_server_wiki:dasi

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Nächste Überarbeitung Beide Seiten der Revision
invis_server_wiki:dasi [2017/03/05 14:04]
flacco [Sicherung einrichten]
invis_server_wiki:dasi [2019/01/08 08:29]
flacco [interne Sicherungen]
Zeile 1: Zeile 1:
 ====== invis Server Datensicherung ====== ====== invis Server Datensicherung ======
 +
 +invis-Server verfügen über ein mehrschichtiges Datensicherungssystem,​ bestehend aus regelmäßigen internen Sicherungen,​ kombiniert mit einer externen Sicherung auf externe Festplatten oder einen Datensicherungsserver.
 +
 +===== interne Sicherungen =====
 +
 +Interne Sicherungen sind zeitgesteuerte Sicherungen wichtiger Datenbestände. Während der Installation werden verschiedene Datensicherungsaufgaben angelegt:
 +
 +^ Aufgabe ​ ^ Zyklus ​ ^ Bemerkung ​ ^
 +^ kbackup ​ | Mo, Mi, Fr, So jeweils um 3:00 Uhr  | Sicherung der Kopano-Konten / ermöglicht das wiederherstellen einzelner Objekte (Mailordner,​ Mails usw. z.B. bei versehentlichem Löschen ​ |
 +^ kdbdump ​ | Di, Do, Sa jeweils um 3:00 Uhr  |  Sicherung der Kopano Datenbank / dient der Wiederherstellung der Kopano Datenbank im Notfall ​ |
 +^ dwdatasnapshot ​ | Samstags um 1:30 Uhr  | Sicherung des Dokuwiki-Datenbestandes ​ |
 +^ alldump ​ | Samstags um 6:00 Uhr  | Sicherung aller Datenbanken des Servers mit Ausnahme der Kopano-Datenbank ​ |
 +^ adbackup ​ | Täglich um 23:30  | Sicherung des Active Directory - ab invis-Server 14.0  |
 +
 +Diese Sicherungen erfolgen zunächst auf die lokalen Festplatten des Servers selbst und sind in der Freigabe Archiv im Unterverzeichnis "​sicherungen"​ zu finden. Damit diese Sicherungen nicht bis ins unermessliche Platz belegen werden die verschiedenen Sicherungsverzeichnisse zyklisch bereinigt. Der Zyklus ist in "​Tagen"​ in <​file>/​etc/​invis/​invis.conf</​file>​ einstellbar und in der Regel auf 21 oder 42 Tage voreingestellt.
 +
 +===== externe Sicherungen =====
  
 Basierend auf unserer Empfehlung eine invis-Server Installation unter Nutzung von Logical-Volume-Management durchzuführen haben wir ein eigenes Datensicherungswerkzeug entwickelt, welches Datensicherung durch Kombination von LV-Snapshots und "//​**rdiff-backup**//"​ durchführt. Basierend auf unserer Empfehlung eine invis-Server Installation unter Nutzung von Logical-Volume-Management durchzuführen haben wir ein eigenes Datensicherungswerkzeug entwickelt, welches Datensicherung durch Kombination von LV-Snapshots und "//​**rdiff-backup**//"​ durchführt.
Zeile 26: Zeile 43:
  
 Legen sie auf einer externen Festplatte eine einzige Partition an und formatieren Sie diese mit einem "​ext3"​ oder "​ext4"​ Dateisystem. Trennen und verbinden Sie die Festplatte nach der Formatierung neu mit Ihrem Server. Warten Sie ein paar Sekunden. ​ Legen sie auf einer externen Festplatte eine einzige Partition an und formatieren Sie diese mit einem "​ext3"​ oder "​ext4"​ Dateisystem. Trennen und verbinden Sie die Festplatte nach der Formatierung neu mit Ihrem Server. Warten Sie ein paar Sekunden. ​
 +
 +=== Registrieren der Sicherungsfestplatte ===
  
 Während der erwähnten wenigen Sekunden Wartezeit können Sie dem Server bei der Hardware-Erkennung zuschauen: Während der erwähnten wenigen Sekunden Wartezeit können Sie dem Server bei der Hardware-Erkennung zuschauen:
Zeile 53: Zeile 72:
 </​code>​ </​code>​
  
-Das Script sollte Ihnen zunächst die Bezeichnung der Festplatte (sdX) und der darauf angelegten Partition (sdX1) anzeigen. ​Ist dies nicht der Fall, sondern statt dessen ​werden ​sinnlose Informationen gezeigtbrechen Sie das Script ​bitte unmittelbar mit der Tastenkombination STRG+C ​ab. Wie es in diesem Fall weitergeht, lesen Sie weiter unten.+Das Script sollte Ihnen zunächst die Bezeichnung der Festplatte (sdX) und der darauf angelegten Partition (sdX1) anzeigen. ​Durchsucht ​werden ​die letzten 3 Stunden des Systemjournals auf entsprechende Hotplug-Events. Wird keine geeignete Festplatte gefundenbricht ​das Script ab. 
  
-Das Script //​**udbadddisk**//​ ermittelt Informationen zur eindeutigen Identifikation der Festplatte und generiert daraus eine UDEV-Regel in der Datei: <​file>/​etc/​udev/​rules.d/​10-backupdisk.rules</​file>​+Ist eine Sicherungsplatte schon länger als 3 Stunden mit dem Server verbunden und Sie kennen den Namen der darauf eingerichteten Sicherungspartition,​ können Sie diese Partition auch als Aufrufparameter angeben: 
 + 
 +<​code>​ 
 +linux:~ udbadddisk sdc1 
 +Gefundene Festplatte: sdc 
 +Gefundene Partition: sdc1 
 + 
 +Gefundenes Merkmal Partitionsgröße:​ 3907027120 
 +Gefundenes Merkmal Seriennummer:​ FDC0FD20EF00000FD0FCC4F2FFFFFF 
 +Datensicherungsplatte hinzugefügt 
 +</​code>​ 
 + 
 +Das Script //​**udbadddisk**//​ ermittelt Informationen zur eindeutigen Identifikation der Festplatte und generiert daraus eine UDEV-Regel in der Datei: <​file>/​etc/​udev/​rules.d/​80-backupdisk.rules</​file>​
  
 Hier die im oben gezeigten Beispiel entstandene UDEV-Regel: Hier die im oben gezeigten Beispiel entstandene UDEV-Regel:
  
 <​code>​ <​code>​
-SUBSYSTEMS=="​usb",​ KERNEL=="​sd*",​ ATTRS{serial}=="​FDC0FD20EF00000FD0FCC4F2FFFFFF",​ ATTR{size}=="​3907027120",​ SYMLINK+="​backup",​ RUN+="/​usr/​bin/​udbdiskplugged", OPTIONS="​last_rule"+SUBSYSTEMS=="​usb",​ KERNEL=="​sd*",​ ATTRS{serial}=="​FDC0FD20EF00000FD0FCC4F2FFFFFF",​ ATTR{size}=="​3907027120",​ SYMLINK+="​backup",​ RUN+="/​usr/​bin/​udbdiskplugged"​
 </​code>​ </​code>​
  
-Sie besagt, wenn ein Gerät des Typs "​sd"​ am USB-Bus mit der Seriennummer "​FDC0FD20EF00000FD0FCC4F2FFFFFF"​ und der genannten Partitionsgröße erkannt wird, soll unter "/​dev"​ ein Symlink unter dem Namen "​backup"​ angelegt werden, der auf das gefundene Gerät verweist (/​dev/​sdX1). Danach soll das Script //​**udbdiskplugged**//​ ausgeführt ​und keine weitere Regel angewendet ​werden.+Sie besagt, wenn ein Gerät des Typs "​sd"​ am USB-Bus mit der Seriennummer "​FDC0FD20EF00000FD0FCC4F2FFFFFF"​ und der genannten Partitionsgröße erkannt wird, soll unter "/​dev"​ ein Symlink unter dem Namen "​backup"​ angelegt werden, der auf das gefundene Gerät verweist (/​dev/​sdX1). Danach soll das Script //​**udbdiskplugged**//​ ausgeführt werden.
  
-Der Parameter "​last_rule"​ wird leider von neueren UDEV-Versionen nicht mehr berücksichtigt. Es kann also sein, das weitere UDEV-Regeln,​ auf die das Gerät passt ausgeführt werden. Ist in diesem Fall aber kein Beinbruch.+=== Sicherung konfigurieren ===
  
 Sind alle Sicherungsfestplatten vorbereitet,​ kann die Sicherung selbst konfiguriert werden. Dies erledigt das Script //​**udbconf**//​ Sind alle Sicherungsfestplatten vorbereitet,​ kann die Sicherung selbst konfiguriert werden. Dies erledigt das Script //​**udbconf**//​
Zeile 92: Zeile 123:
 </​code>​ </​code>​
  
-Weiterhin müssen Sie die Größe des zu verwendenden Snapshot-Volumes festlegen. Die maximal mögliche Größe zeigt //​**udbconf**//​ an, die minimale Größe orientiert sich an den größten zu sichernden Dateien zuzüglich Sicherheitsreserve. Normalerweise sollte eine Snapshot-Volume-Größe von 20GB ausreichen. anders sieht es aber aus, wenn Sie auf Ihrem invis-Server virtuelle Maschinen betreiben, deren Fesplatten-Image Dateien können deutlich größer als 20GB werden. Schauen Sie sich also zunächst die Dateigrößen unterhalb von <​file>/​srv/​virtualbox</​file>​ an.+Weiterhin müssen Sie die Größe des zu verwendenden Snapshot-Volumes festlegen. Die maximal mögliche Größe zeigt //​**udbconf**//​ an. Normalerweise sollte eine Snapshot-Volume-Größe von 20GB ausreichen.
  
 **udbconf starten:** **udbconf starten:**
Zeile 153: Zeile 184:
  
 Die Anzeige erfolgt im Portal auf der Seite "​Status"​. Die Anzeige erfolgt im Portal auf der Seite "​Status"​.
 +
 +=== Testen ===
 +
 +Vor allem, wenn Sie die Einrichtung remote vornehmen ist es wichtig einen Test der Sicherung durchführen zu können, ohne, dass Ihnen helfende Hände zur Seite stehen. Dazu müssen Sie einen "​uevent"​ triggern, damit die neue UDEV Erkennungsregel angewendet wird:
 +
 +<​code>​
 +linux:~ echo change > /​sys/​block/​sdX/​uevent
 +</​code>​
 +
  
 ==== Einrichtung der Datensicherung auf einen Sicherungsserver ==== ==== Einrichtung der Datensicherung auf einen Sicherungsserver ====
Zeile 158: Zeile 198:
 Der Sicherungsserver selbst benötigt einfach nur eine Linux-Installation mit genügend Festplattenplatz. Auf ihm muss der SSH-Dienst laufen und //​**rdiff-backup**//​ installiert sein. Der Sicherungsserver selbst benötigt einfach nur eine Linux-Installation mit genügend Festplattenplatz. Auf ihm muss der SSH-Dienst laufen und //​**rdiff-backup**//​ installiert sein.
  
-==== SSH vorbereiten ​====+=== SSH vorbereiten ===
  
 Damit die Sicherung über SSH erfolgen kann, muss sich der Benutzer "​root"​ des Quell-Servers ohne Passwort per SSH am Sicherungsserver anmelden können. Es ist nicht notwendig, dass auch auf dem Sicherungsserver das Konto des Benutzers "​root"​ verwendet wird. Es genügt dort ein Benutzerkonto,​ welches Schreibrecht im Zielverzeichnis der Datensicherung hat. Damit die Sicherung über SSH erfolgen kann, muss sich der Benutzer "​root"​ des Quell-Servers ohne Passwort per SSH am Sicherungsserver anmelden können. Es ist nicht notwendig, dass auch auf dem Sicherungsserver das Konto des Benutzers "​root"​ verwendet wird. Es genügt dort ein Benutzerkonto,​ welches Schreibrecht im Zielverzeichnis der Datensicherung hat.
Zeile 219: Zeile 259:
 Gelingt dies ohne Passwortabfrage,​ ist die Vorbereitung abgeschlossen. Gelingt dies ohne Passwortabfrage,​ ist die Vorbereitung abgeschlossen.
  
-==== Sicherung einrichten ​====+=== Sicherung einrichten ===
  
 Das Einrichten einer Sicherung auf einen externen Server läuft analog zur Sicherung auf externe Festplatten ab. Es existiert mit //​**rdbunetconf**//​auch hier ein Script, welches die Konfigurationsdatei zur Sicherung generiert. Es ist einfach ohne weitere Optionen aufzurufen: Das Einrichten einer Sicherung auf einen externen Server läuft analog zur Sicherung auf externe Festplatten ab. Es existiert mit //​**rdbunetconf**//​auch hier ein Script, welches die Konfigurationsdatei zur Sicherung generiert. Es ist einfach ohne weitere Optionen aufzurufen:
Zeile 247: Zeile 287:
  
 ... work in progress ... ... work in progress ...
 +
 +===== Aufräumen =====
 +
 +Wir haben festgestellt,​ dass gerade bei der Verwendung von externen Sicherungsfestplatten immer wieder Probleme auftreten, beispielsweise,​ weil Festplatten versehentlich getrennt werden noch während eine Sicherung läuft. Um derartiges zu vermeiden zeigt das invis-Portal inzwischen wesentlich deutlicher an, dass eine Sicherung aktiv ist. Dies setzt natürlich die Nutzung des invis-Portals voraus....
 +
 +Um nach einem Abbruch einer Sicherung verwaiste Mounts oder Snapshot-Volumes wieder los zu werden läuft per Cornjob alle 3 Minuten das Script //​**dasimonitor**//​. Das Script ist auch die Quelle der Informationen die im invis-Portal angezeigt werden.
 +
 +====== Kopano Datensicherung ======
 +
 +Die Groupware Kopano bringt ein eigenes Brick-Level Backup-System mit. invis-Server sind so eingerichtet,​ dass sie täglich abwechselnd einmal die komplette Kopano-Datenbank in Form eines Dumps sichern und einmal das Bricklevel-Backup durchführen. Dabei dient die gesicherte Datenbank als Disaster-Recovery,​ also dem Wiederherstellen der gesamten Datenbank im Falle eines Crashs und das Bricklevel-Backup dem Wiederherstellen einzelner Elemente, beispielsweise wenn diese versehentlich gelöscht wurden.
 +
 +Ziel beider Sicherungen ist das Verzeichnis:​ <​file>/​srv/​shares/​sicherungen</​file>​
 +
 +===== Wiederherstellung einzelner Elemente aus dem Brick-Level Backup =====
 +
 +Das benötigte Werkzeug ist **//​kopan-backup//​**,​ es bietet verschiedene Möglichkeiten Elemente eines geicherten Kopano-Stores wiederherzustellen. Beginnen wir damit uns den Inhalt der Sicherung anzeigen zu lassen. Wechseln Sie dazu ins Verzeichnis in dem die gesicherten Stores liegen:
 +
 +<​file>/​srv/​shares/​archiv/​sicherungen/​kopanostores</​file>​
 +
 +Der folgende Befehl gibt den gesamten Inhalt eines gesicherten Benutzer-Stores aus:
 +
 +<​code>​
 +invis:/​srv/​shares/​archiv/​sicherungen/​kopanostores # kopano-backup --index username
 +</​code>​
 +
 +Im Beispiel steht "​username"​ sowohl für den Namen des Sicherungverzeichnisses eines Benutzers, als auch für den aktiven Benutzer in dessen Store ein oder mehrere Elemente wiederhergestellt werden sollen.
 +
 +Mit der Option **''​-u username2''​** können Elemente auch in einen anderen aktiven Store wiederhergestellt werden.
 +
 +Um die Ausgabe einzugrenzen,​ ist **//​grep//​** ein geeignetes Werkzeug:
 +
 +<​code>​
 +invis:/​srv/​shares/​archiv/​sicherungen/​kopanostores # kopano-backup --index username | grep Posteingang
 +</​code>​
 +
 +Die Ausgabe der Informationen erfolgt tabellarisch,​ Spaltentrenner ist das Komma. Nachfolgend der Aufbau der Zeilen:
 +
 +<​code>​
 +Eindeutige ID,​Ordner,​Datum Uhrzeit,​Betreff oder Property
 +</​code>​
 +
 +Anhand der ID können einzelne Elemente wiederhergestellt werden. Suchen Sie zunächst wie oben gezeigt das wiederherzustellende Element, beispielsweise anhand des Betreffs oder des Datums eines Elementes. Nutzen Sie jetzt die ID des gesuchten Elements um es wiederherzustellen:​
 +
 +**Wiederherstellen eines einzelnen Elementes**
 +
 +<​code>​
 +/​srv/​shares/​archiv/​sicherungen/​kopanostores # kopano-backup --restore username --sourcekey DFD123BE9FD84F7AB08E00DD959F2730080100000000
 +</​code>​
 +
 +**Wiederherstellen aller Elemente eines Ordners**
 +
 +<​code>​
 +/​srv/​shares/​archiv/​sicherungen/​kopanostores # kopano-backup --restore username -f Posteingang
 +</​code>​
 +
 +Dabei wird im Store des Benutzers nichts überschrieben. Bereits vorhandene Elemente werden automatisch übersprungen.
 +
 +**Wiederherstellung nach Datum**
 +
 +Auch eine zeitliche Eingrenzung der Wiederherstellung auf ein Datum oder einen Datumsbereich ist möglich.
 +
 +<​code>​
 +/​srv/​shares/​archiv/​sicherungen/​kopanostores # kopano-backup --restore username -b 2014-01-01 -e 2015-01-01
 +</​code>​
 +
 +Die Optionen **''​-b''​** und **''​-e''​** stehen wie kaum anders zu vermuten für "​begin"​ und "​end"​.
 +
 +**Komplexeres Beispiel**
 +
 +Die hier gezeigten Beispiele lassen sich selbstverständlich auch kombinieren.
 +
 +Wenn Sie beispielsweise alle Mails aus dem Posteingang eines Users aus einem bestimmten Zeitraum in einen Unterordner eines anderen Users wiederherstellen wollen sähe das wie folgt aus:
 +
 +<​code>​
 +/​srv/​shares/​archiv/​sicherungen/​kopanostores # kopano-backup --restore username1 -f Posteingang -b 2014-01-01 -e 2015-01-01 -u username2 --restore-root from_username1
 +</​code>​
 +
 +Zu erwähnen wäre noch die Option **''​- -recursive''​**,​ sie stellt alle Elemente eines Ordners inklusive Unterordner wieder her.
 +===== Wiederherstellung der vollständigen Datenbank =====
 +
 +//​**Achtung**:​ Die Wiederherstellung der Kopano-Datenbank sollten Sie nur durchführen,​ wenn die vorhandene Datenbank irreparabel beschädigt ist. Die vorhandene Datenbank wird bei der Wiederherstellung vollständig überschrieben.//​
 +
 +Es gibt zwei mögliche Vorgehensweisen. Die Sicherung liegt gezippt vor. Sie können die Datei, wenn gewünscht zunächst entzippen und dann wiederherstellen,​ oder Sie führen beide Schritte in einem durch.
 +
 +**2 Schritte**
 +
 +<​code>​
 +invis:~ # gunzip gunzip /​srv/​shares/​archiv/​sicherungen/​vollsicherungen/​datenbanksicherungen/​20171003/​kopano.invis.20171003.gz
 +invis:~ # mysql -u root -p kopano < /​srv/​shares/​archiv/​sicherungen/​vollsicherungen/​datenbanksicherungen/​20171003/​kopano.invis.20171003
 +</​code>​
 +
 +**1 Schritt**
 +
 +<​code>​
 +invis:~ # gunzip < /​srv/​shares/​archiv/​sicherungen/​vollsicherungen/​datenbanksicherungen/​20171003/​kopano.invis.20171003.gz | mysql -u root -p kopano
 +</​code>​
  • invis_server_wiki/dasi.txt
  • Zuletzt geändert: 2021/06/01 09:40
  • von flacco