UUGRN:Dienste/Backup: Unterschied zwischen den Versionen

Aus UUGRN
K (Typos)
(→‎Data Recovery: Servercrash angelegt)
Zeile 61: Zeile 61:


==Data Recovery==
==Data Recovery==
==Totalausfall der Serverhardware==
===Totalausfall einer internen Platte===
===Totalausfall einer internen Platte===
* sd0 (bootplatte)
* sd0 (bootplatte)

Version vom 22. Oktober 2005, 05:50 Uhr

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.

Datenspeicher

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)

Filesystem    Size   Used  Avail Capacity  Mounted on
/dev/sd0a    62.1M  35.1M  23.9M    60%    /
/dev/sd0d     1.9G   1.3G   449M    75%    /usr
/dev/sd0e     991M   769M   173M    82%    /var
/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.uugrn.org)

Filesystem    Size    Used   Avail Capacity  Mounted on
/dev/md5c     989M    259M    651M    28%    /data1/jail/005


Lokale Datensicherung

  • täglich um 23:59 /root/bin/do_backup.sh:
  1. Verzeichnisse in tar.gz packen --> /data/backup
  2. MySQL dump aller Datenbanken --> /data/backup/mysql/<timestamp>/, 7 Tagesstände werden lokal gehalten
  3. rsync von /data/backup/ nach backup@up.uugrn.org:/data/backup/charm.uugrn.org/
  • Logfile: /data/backup/backup.log

Tagessicherung

  • täglich um 4:30, sonntags um 7:30 /root/bin/do_rsync.sh
  • Logfile: /platz0/charm.uugrn.org/<tag>/rsync.log
  • rsync von /data und /home nach /platz0/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

Totalausfall der Serverhardware

Totalausfall einer internen Platte

  • sd0 (bootplatte)
  1. Ersatzplatte besorgen (habe noch 3 davon hier rumliegen, rabe)
  2. vor Ort (Speyer!) einbauen
  3. Rettungssystem von Diskette und/oder USB Stick booten (kein CD-ROM!)
  4. USB-Platte (aktuell sd3) /backup mounten, prüfen ob backups vorhanden und lesbar
  5. Ersatzplatte sd0 partitionieren (siehe 0.2:sd0)
  6. Gepackte dumps mit gunzip | restore auf die jeweiligen Dateisysteme zurückschreiben
  7. Aktuellste tar-Datensicherung (sofern neuer als im Dump) von /var und /etc mit tar auspacken (siehe 2. Tagessicherung)
  • sd1 (/home)
  1. Ersatzplatte besorgen
  2. Jumper auf ID=1, vor Ort einbauen
  3. System normal booten
  4. Platte sd1 partitionieren (eine große Partition) und mounten nach /home
  5. Gepackten dump /backup/charm.uugrn.org/dump/charm._home.dump.gz mit gunzip|restore nach /home schreiben
  6. ggf mittels rsync aktuellste Livekopie aus /platz0/charm.uugrn.org/<tag>/home/ überschreiben (diff zur Wochensicherung)
  • sd2 (/data und /usr/ports)
  1. Ersatzplatte besorgen
  2. Jumper auf ID=2, vor Ort einbauen
  3. System normal booten
  4. Platte sd2 partitionieren (/usr/ports und /data, siehe 0.2:sd2) und mounten
  5. Gepackten dump /backup/charm.uugrn.org/dump/charm._data.dump.gz mit gunzip|restore nach /data schreiben
  6. ggf mittels rsync aktuellste Livekopie aus /platz0/charm.uugrn.org/<tag>/data/ überschreiben (diff zur Wochensicherung)
  7. 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
  1. Neues Gehäuse besorgen (USB2, 3.5", ATA)
  2. Vor Ort (Speyer) Platte umbauen, neu mounten (s. 0.2:sd3)
  • Platte defekt
  1. Neue Platte besorgen (ATA, 3.5", min 40GB)
  2. Platte vor Ort (Speyer) umbauen,
  3. Platte neu partitionieren und mounten (siehe 0.2:sd3)
  4. Verzeichnisstruktur anlegen (vgl Tages-/Wochensicherung Punkt 2+3)
  5. Wochensicherung manuell starten: /root/bin/do_dump.sh
  6. Tagessicherung manuell starten: /root/bin/do_rsync.sh

Rücksicherung einzelner Dateien

  • Rücksicherung in /home oder in /data
  1. Speicherorte siehe Tagessicherung
  2. 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)
  1. Speicherorte siehe Lokale_Datensicherung
  2. 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)
  1. die 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.
  2. 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 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