UUGRN:Dienste/Backup: Unterschied zwischen den Versionen

Aus UUGRN
K (vorlagen verwenden)
 
(16 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
Dieser Artikel beschreibt Datensicherungs-Strategie und soll im Falle eines Falles bei der Wiederherstellung von Daten helfen. Da sich dieses Wiki auf dem UUGRN-Server selbst befindet, sollte eine Hardcopy (Ausdruck, PDF, ... ) extern gehalten werden.
+
Dieser Artikel beschreibt Datensicherungs-Strategie und soll im Falle eines Falles bei der Wiederherstellung von Daten helfen.  
  
==Datenspeicher==
+
{{Navigationsleiste Dienste}}
===Platten===
 
* UW SCSI:
 
sd0 at scsibus0 targ 0 lun 0: <IBM, DDRS-34560D, DC1B> SCSI2 0/direct fixed
 
sd0: 4357MB, 8387 cyl, 5 head, 212 sec, 512 bytes/sec, 8925000 sec total
 
sd1 at scsibus0 targ 1 lun 0: <SEAGATE, ST34502LW, 0004> SCSI2 0/direct fixed
 
sd1: 4340MB, 6962 cyl, 6 head, 212 sec, 512 bytes/sec, 8888924 sec total
 
sd2 at scsibus0 targ 2 lun 0: <SEAGATE, ST34502LW, 0006> SCSI2 0/direct fixed
 
sd2: 4340MB, 6962 cyl, 6 head, 212 sec, 512 bytes/sec, 8888924 sec total
 
* USB2-ATA:
 
sd3 at scsibus1 targ 1 lun 0: <IC35L080, AVVA07-0, 0811> SCSI0 0/direct fixed
 
sd3: 78533MB, 78533 cyl, 64 head, 32 sec, 512 bytes/sec, 160836480 sec total
 
  
===Filesysteme (lokal)===
+
== Backup-Server ==
Filesystem    Size  Used  Avail Capacity  Mounted on
+
=== Historisiertes Systembackup auf [[UUGRN:Server/strange|strange.uugrn.org]] ===
/dev/sd0a    62.1M  35.1M  23.9M    60%    /
+
;Server: Seit Mitte Juli 2011 betreibt UUGRN den Server [[UUGRN:Server/strange|strange.uugrn.org]]
/dev/sd0d    1.9G  1.3G  449M    75%    /usr
+
;Backupfrequenz: Einmal '''täglich''' werden die Backups der UUGRN Server per rsync eingesammelt und als 1:1 Kopie vorgehalten, bei Bedarf, zB vor Upgrades auch häufiger.
/dev/sd0e    991M  769M  173M    82%    /var
+
;Storage: Das System beinhaltet neben einer Systemplatte ein [[UUGRN:Server/strange/storage#ZFS|ZFS-Pool]] bestehend aus '''[[UUGRN:Server/strange/storage#Platten|4x750GB SATA Platten]]''', was einer nutzbaren Kapazität von 1.36TB entspricht. Das Backup-Volume arbeitet mit '''Deduplikation''' und alle 60min wird per cron ein '''ZFS-Snapshot''' erstellt. Das Vorhalten der ZFS Snapshots kostet zusätzlich nur den Speicherplatz der gelöschten Daten.
/dev/sd0f    495M  213K  470M    0%    /usr/obj
 
/dev/sd0g    505M  14.0K  480M    0%    /tmp
 
/dev/sd1d    4.1G  3.4G  532M    87%    /home
 
/dev/sd2d    1.3G  585M  702M    45%    /usr/ports
 
/dev/sd2e    2.8G  2.6G  11.3M  100%    /data
 
/dev/sd3a    29.5G  12.9G  16.0G    45%    /backup
 
/dev/sd3d    29.5G  24.2G  4.7G    84%    /platz0
 
/dev/sd3e    16.4G  12.1G  4.0G    75%    /platz1
 
  
===Filesysteme (auf [[up|up.uugrn.org]])===
+
=== ZFS-Snapshots auf {{stwserv2.stwserv.de}} ===
Filesystem    Size    Used  Avail Capacity  Mounted on
+
;Server: Dieser Server ist geplant ab April 2013. Es ist der künftige Primäre Server von Stadtwiki e.V.
/dev/md5c    989M    259M    651M    28%    /data1/jail/005
+
;Backups: in einem noch zu definierenden Intervall werden auf {{top3.uugrn.org}} Backup-Snapshots aller Jails angelegt ("zroot"-Pool) und lokal im "tank"-Pool historisiert. Die jeweils 7-10 letzten Backup-Snapshots von "tank" auf {{top3.uugrn.org}} werden außerdem per "zfs send" an {{stwserv2.stwserv.de}}::tank übertragen. Mit Hilfe dieser Jail-Snapshots kann im Bedarfsfall {{stwserv2.stwserv.de}} diese Jails auch selbst hochfahren oder aber für ein Desaster-Recovery von {{top3.uugrn.org} vorhalten.
  
 +
== Systeme im Backup ==
 +
=== Server ===
 +
* {{top3.uugrn.org}}
 +
* {{strange.uugrn.org}}
 +
* stwserv1.stwserv.de
 +
* {{stwserv2.stwserv.de}}
  
==Lokale Datensicherung==
 
*täglich um 23:59 /root/bin/do_backup.sh:
 
# Verzeichnisse in [[tar|tar.gz]] packen --> /data/backup
 
# [[mysqldump|MySQL dump]] aller Datenbanken  --> /data/backup/mysql/<timestamp>/, 7 Tagesstände werden lokal gehalten
 
# [[rsync]] von /data/backup/ nach backup@[[up|up.uugrn.org]]:/data/backup/[[charm|charm.uugrn.org]]/
 
*Logfile: /data/backup/backup.log
 
  
==Tagessicherung==
+
[[Kategorie:UUGRN:Backup| ]]
* täglich um 4:30, sonntags um 7:30 /root/bin/do_rsync.sh
+
{{Stub}}
* Logfile: /platz0/[[charm|charm.uugrn.org]]/<tag>/rsync.log
 
* [[rsync]] von /data und /home nach /platz0/[[charm|charm.uugrn.org]]/<tag>/ (USB-Platte)
 
Mo: /platz0/charm.uugrn.org/1
 
Di: /platz0/charm.uugrn.org/2
 
Mi: /platz0/charm.uugrn.org/3
 
Do: /platz0/charm.uugrn.org/4
 
Fr: /platz0/charm.uugrn.org/5 -> ../../platz1/charm.uugrn.org/5
 
Sa: /platz0/charm.uugrn.org/6 -> ../../platz1/charm.uugrn.org/6
 
So: /platz0/charm.uugrn.org/7 -> ../../backup/charm.uugrn.org/7
 
 
 
==Wochensicherung==
 
* sonntags um 3:30 /root/bin/do_dump.sh
 
* Logfile: mail an admin@uugrn.org
 
* [[dump]] mit [[gzip]] -9 auf die [[USB]]-Platte
 
"/ /usr /var /home /data"    --> /backup/charm.uugrn.org/dump/
 
vorige Datensicherung        --> /backup/charm.uugrn.org/dump/old/
 
vorvorige Datensicherung    --> /backup/charm.uugrn.org/dump/older/
 
 
 
==Data Recovery==
 
 
 
Im Folgenden sind Datenwiederherstellungsszenarien beschrieben, die auftreten können und wie man die Schritte mit der derzeit vorhandenen Datensicherung durchführt.
 
 
 
===Totalausfall der Serverhardware===
 
Der ''worst-case'' ist der Totalverlust der Serverhardware (z.B. durch Naturgewalten wie Feuer und/oder Wasser) dennoch sollte es mit etwas Aufwand möglich sein, aus der vorhandenen Datensicherung ein Ersatzsystem aufzuziehen. Dabei müssen die Fälle ''USB Platte ist noch da'' und ''USB-Platte ist ebenfalls zerstört'' unterschieden werden.
 
 
 
* USB Platte ist noch da und funktioniert
 
# Neue Hardware besorgen
 
# OpenBSD 3.6 Rettungssystem booten
 
# USB Platte anschließen und nach /backup mounten
 
# prüfen, ob die Backups vorhanden und lesbar sind
 
# Anhand der oben aufgelisteten Filesysteme eine äquivalente Filesystemsruktur anlegen
 
# dumps mit [[gunzip]]|[[restore]] zurückspielen
 
 
 
* USB-Platte mit den Backups ist nicht mehr verfügbar
 
# Neue Hardware besorgen
 
# OpenBSD 3.6 installieren
 
# Die wichtigsten Packages (z.B. mysql-*) einspielen
 
# Backup der wichtigsten Systemverzeichnisse von backup@up.uugrn.org:charm.uugrn.org/ zurückholen
 
# ... und einzeln einspielen.
 
 
 
In diesem Backup sind /etc-Verzeichnisse, die mysql-Datenbank ([[mysqldump]]), /var/www etc enthalten. Nicht enthalten sind aus Platzgründen die Daten- und Homeverzeichnisse, diese wären unwiederbringlich verloren, sofern nicht aus dem zerstörten Server wiederherstellbar (z.B. bei Wasserschaden)
 
 
 
===Totalausfall einer internen Platte===
 
* sd0 (bootplatte)
 
# Ersatzplatte besorgen (habe noch 3 davon hier rumliegen, --[[Benutzer:Rabe|RaBe]] 08:08, 22. Okt 2005 (CEST))
 
# vor Ort (Speyer!) einbauen
 
# Rettungssystem von Diskette und/oder USB Stick booten (kein CD-ROM!)
 
# USB-Platte (aktuell sd3) /backup mounten, prüfen ob backups vorhanden und lesbar
 
# Ersatzplatte sd0 partitionieren (siehe 0.2:sd0)
 
# Gepackte dumps mit gunzip | restore auf die jeweiligen Dateisysteme zurückschreiben
 
# Aktuellste tar-Datensicherung (sofern neuer als im Dump) von /var und /etc mit tar auspacken (siehe 2. Tagessicherung)
 
 
 
* sd1 (/home)
 
# Ersatzplatte besorgen
 
# Jumper auf ID=1, vor Ort einbauen
 
# System normal booten
 
# Platte sd1 partitionieren (eine große Partition) und mounten nach /home
 
# Gepackten dump /backup/charm.uugrn.org/dump/charm._home.dump.gz mit gunzip|restore nach /home schreiben
 
# ggf mittels [[rsync]] aktuellste Livekopie aus /platz0/charm.uugrn.org/<tag>/home/ überschreiben (diff zur Wochensicherung)
 
 
 
* sd2 (/data und /usr/ports)
 
# Ersatzplatte besorgen
 
# Jumper auf ID=2, vor Ort einbauen
 
# System normal booten
 
# Platte sd2 partitionieren (/usr/ports und /data, siehe 0.2:sd2) und mounten
 
# Gepackten dump /backup/charm.uugrn.org/dump/charm._data.dump.gz  mit [[gunzip]]|[[restore]] nach /data schreiben
 
# ggf mittels [[rsync]] aktuellste Livekopie aus /platz0/charm.uugrn.org/<tag>/data/ überschreiben (diff zur Wochensicherung)
 
# '''ACHTUNG:''' /usr/ports ist per cvs verfügbar und ist daher '''NICHT IM BACKUP ENTHALTEN'''
 
 
 
===Totalausfall der USB-Platte (Datensicherungsplatte)===
 
* USB-ATA Gehäuse defekt
 
# Neues Gehäuse besorgen (USB2, 3.5", ATA)
 
# Vor Ort (Speyer) Platte umbauen, neu mounten (s. 0.2:sd3)
 
 
 
* Platte defekt
 
# Neue Platte besorgen (ATA, 3.5", min 40GB)
 
# Platte vor Ort (Speyer) umbauen,
 
# Platte neu partitionieren und mounten (siehe 0.2:sd3)
 
# Verzeichnisstruktur anlegen (vgl Tages-/Wochensicherung Punkt 2+3)
 
# Wochensicherung manuell starten: /root/bin/do_dump.sh
 
# Tagessicherung manuell starten:  /root/bin/do_rsync.sh
 
 
 
===Rücksicherung einzelner Dateien===
 
* Rücksicherung in /home oder in /data
 
# Speicherorte siehe [[UUGRN:Backup#Tagessicherung|Tagessicherung]]
 
# Dateien aus dem jeweiligen Verzeichnis einfach herauskopieren, z.B. Rücksichern einer Datei aus /data/foo/bar:
 
cp -v /platz0/charm.uugrn.org/4/data/foo/bar/blafasel.dat /data/foo/bar/
 
 
 
* Rücksicherung von Systemverzeichnissen (aktuelle Datensicherung)
 
# Speicherorte siehe [[UUGRN:Backup#Lokale_Datensicherung|Lokale_Datensicherung]]
 
# entsprechende tar.gz-Datei suchen und mit Hilfe von [[tar]] alle oder eine Liste von Dateien auspacken. z.B. Rücksichern von /etc/fstab
 
# tar tvvfz /data/backup/_etc.tar.gz etc/fstab
 
-rw-r--r--  1 root    wheel          384 Oct 11 19:34 etc/fstab
 
# tar xvfz data/backup/_etc.tar.gz etc/fstab
 
 
 
* Rücksicherung von Systemverzeichnissen (ältere Datensicherung)
 
# die [[UUGRN:Backup#Lokale_Datensicherung|Lokale_Datensicherung]] findet in /data/backup statt und wird daher von der Tagessicherung täglich per [[rsync]] in /platz0/charm.uugrn.org/?/data/backup/ gespeichert.
 
# Tarball raussuchen und daraus mit [[tar]] die gewünschte Datei entpacken (''xv'', vorher mit ''tvv'' den Inhalt auflisten):
 
# ls -la /platz0/charm.uugrn.org/?/data/backup/_etc.tar.gz
 
-rw-r--r--  1 root  wheel  793247 Oct 21 23:59 /platz0/charm.uugrn.org/6/data/backup/_etc.tar.gz
 
# tar tvvfz /platz0/charm.uugrn.org/6/data/backup/_etc.tar.gz etc/fstab
 
-rw-r--r--  1 root    wheel          384 Oct 11 19:34 etc/fstab
 
# tar xvfz /platz0/charm.uugrn.org/6/data/backup/_etc.tar.gz etc/fstab
 
etc/fstab
 
 
 
===Rücksicherung einer MySQL Datenbank===
 
MySQL arbeitet intern auf Binärdateien. Zum Zeitpunkt des Backups ist die Datenbank ([[mysqld]]) aktiv, die Binärdateien sind daher ähnlich wie ein gemountetes Dateisystem mit Vorsicht zu genießen, da sie nicht zu jedem Zeitpunkt in sich konsistent sind. Um diesem Problem zu begegnen werden die einzelnen Datenbanken mittels [[mysqldump]], welches den Inhalt der Datenbanken dierkt in SQL auswirft, gespeichert.
 
Die [[UUGRN:Backup#Lokale_Datensicherung|Lokale_Datensicherung]] erzeugt täglich einen Abzug aller MySQL-Datenbanken mit mysqldump und speichert diese in /data/backup/mysql/<timestamp>/DBNAME.mysql.dump.gz. Es werden die letzten 7 Stände in /data/backup/mysql/ gehalten, ältere Versionen findet man unter /platz0/charm.uugrn.org/?/data/backup/mysql/*/
 
 
 
Beispiel: Zurücksichern der Datenbank ''test'':
 
 
 
* Datenbankdump ausfindig machen
 
# ls -la /data/backup/mysql/*/test.mysql.dump.gz
 
-rw-r--r--  1 root  wheel  102 Oct 21 05:28 /data/backup/mysql/20051021052802/test.mysql.dump.gz
 
-rw-r--r--  1 root  wheel  102 Oct 21 05:28 /data/backup/mysql/20051021052805/test.mysql.dump.gz
 
-rw-r--r--  1 root  wheel  102 Oct 21 05:37 /data/backup/mysql/20051021053737/test.mysql.dump.gz
 
-rw-r--r--  1 root  wheel  102 Oct 21 05:41 /data/backup/mysql/20051021054119/test.mysql.dump.gz
 
-rw-r--r--  1 root  wheel  102 Oct 21 05:45 /data/backup/mysql/20051021054542/test.mysql.dump.gz
 
-rw-r--r--  1 root  wheel  102 Oct 21 06:10 /data/backup/mysql/20051021061038/test.mysql.dump.gz
 
-rw-r--r--  1 root  wheel  102 Oct 21 23:59 /data/backup/mysql/20051021235950/test.mysql.dump.gz
 
oder (das kann sehr viel mehr werden als hier gezeigt)
 
# ls -la /platz0/charm.uugrn.org/?/data/backup/mysql/*/test.mysql.dump.gz
 
-rw-r--r--  1 root  wheel  102 Oct 21 05:28 /platz0/charm.uugrn.org/6/data/backup/mysql/20051021052802/test.mysql.dump.gz
 
-rw-r--r--  1 root  wheel  102 Oct 21 05:28 /platz0/charm.uugrn.org/6/data/backup/mysql/20051021052805/test.mysql.dump.gz
 
-rw-r--r--  1 root  wheel  102 Oct 21 05:37 /platz0/charm.uugrn.org/6/data/backup/mysql/20051021053737/test.mysql.dump.gz
 
-rw-r--r--  1 root  wheel  102 Oct 21 05:41 /platz0/charm.uugrn.org/6/data/backup/mysql/20051021054119/test.mysql.dump.gz
 
-rw-r--r--  1 root  wheel  102 Oct 21 05:45 /platz0/charm.uugrn.org/6/data/backup/mysql/20051021054542/test.mysql.dump.gz
 
-rw-r--r--  1 root  wheel  102 Oct 21 06:10 /platz0/charm.uugrn.org/6/data/backup/mysql/20051021061038/test.mysql.dump.gz
 
-rw-r--r--  1 root  wheel  102 Oct 21 23:59 /platz0/charm.uugrn.org/6/data/backup/mysql/20051021235950/test.mysql.dump.gz
 
 
 
* Einen Datenbankdump der Datenbank ''test'' zurücksichern in die Datenbank ''foobar'' (''foobar'' muss schon bestehen, ggf. vorher anlegen!) '''ACHTUNG:''' Gleichnamige Tabellen in der Datenbank ''test'' werden mit diesem Verfahren ohne Rückfrage überschrieben!
 
# echo "create database foobar;" | mysql -u root -prootpasswort
 
# zcat /data/backup/mysql/20051021054119/test.mysql.dump.gz | mysql -u username -ppasswort foobar
 
 
 
Soll statt einer ganzen Datenbank nur eine oder einzelne Tabelle/n (z.B. ''blafasel'') rückgesichert werden, ist folgendes Vorgehen zu wählen:
 
* Den gewünschten Stand der gesuchten Datenbank (''test'') in einer temporären Datenbank (''foobar'') einlesen (siehe oben)
 
* Mit [[mysqldump]] dann die gewünschte Tabelle aus der temporären Datenbank rausholen und in die Zieldatenbank ''test'' einspielen (überschreiben!):
 
$ mysqldump --opt -u user -ppasswort foobar blafasel | mysql -u username -ppasswort test
 

Aktuelle Version vom 11. April 2013, 23:30 Uhr

Dieser Artikel beschreibt Datensicherungs-Strategie und soll im Falle eines Falles bei der Wiederherstellung von Daten helfen.

öffentliche→  Mailingliste (Mailinglistenarchiv) • WikiPadIRCJobsWebseiteFTP Für Mitglieder→  IntranetalphaShellsJailsWebspaceMySQLUsenetBlogsBNCMailman Infrastruktur→  MailDNSBackupProxyircbotBuildsystem

Öffentliche →   • IRC ChatDrawing PadAscii PadText PadVorstand Infoshare  Für Mitglieder →   • Shell AccountUsenet Zugang  Infrastruktur →   • DNS   <edit>

Backup-Server[Bearbeiten]

Historisiertes Systembackup auf strange.uugrn.org[Bearbeiten]

Server
Seit Mitte Juli 2011 betreibt UUGRN den Server strange.uugrn.org
Backupfrequenz
Einmal täglich werden die Backups der UUGRN Server per rsync eingesammelt und als 1:1 Kopie vorgehalten, bei Bedarf, zB vor Upgrades auch häufiger.
Storage
Das System beinhaltet neben einer Systemplatte ein ZFS-Pool bestehend aus 4x750GB SATA Platten, was einer nutzbaren Kapazität von 1.36TB entspricht. Das Backup-Volume arbeitet mit Deduplikation und alle 60min wird per cron ein ZFS-Snapshot erstellt. Das Vorhalten der ZFS Snapshots kostet zusätzlich nur den Speicherplatz der gelöschten Daten.

ZFS-Snapshots auf stwserv2.stwserv.degeplant[Bearbeiten]

Server
Dieser Server ist geplant ab April 2013. Es ist der künftige Primäre Server von Stadtwiki e.V.
Backups
in einem noch zu definierenden Intervall werden auf top3.uugrn.orgoffline Backup-Snapshots aller Jails angelegt ("zroot"-Pool) und lokal im "tank"-Pool historisiert. Die jeweils 7-10 letzten Backup-Snapshots von "tank" auf top3.uugrn.orgoffline werden außerdem per "zfs send" an stwserv2.stwserv.degeplant::tank übertragen. Mit Hilfe dieser Jail-Snapshots kann im Bedarfsfall stwserv2.stwserv.degeplant diese Jails auch selbst hochfahren oder aber für ein Desaster-Recovery von {{top3.uugrn.org} vorhalten.

Systeme im Backup[Bearbeiten]

Server[Bearbeiten]

UUGRN-Wiki verbessern („Stub”)

Dieser Artikel ist leider sehr kurz. Also: Sei mutig und mache aus ihm bitte einen guten Artikel, wenn du mehr zum Thema „Dienste/Backup” weißt.