Zeit für backups!

Aloha,

backup muss ja auch sein, spätestens wenn man sich denkt „verdammtes dris ding“ wärent sich der Server vor den Augen zerlegt…. um danach wenigstens nicht ganz auf verlorenem posten und ohne daten zu sein, sollte man ein backup machen.

Das führt einen zu ein paar fragen..

  1. was sollte ich eigentlich sichern ?
  2. wie sichere ich ?
  3. und wie kann ich es wiederherstellen ?

fangen wir mit punkt 1 an

Was sollte ich eigentlich sichern?

  • Gesichert werden sollte grundsätzlich immer alles, das das nicht machbar ist bzw. teilweise unsinnig ist ist noch etwas anderes, aber gesichert werden sollte u.a die mysql datenbank, wichtige Webserver( Ob Spiele oder Produktiv systeme sei mal dahingestellt)

Wie Sichere ich ?

  • Das ist eine interessante frage, nehmen wir z.B. die mysql Datenbank, dazu kann man sich am einfachsten ein kleines bash script schreiben( gilt eigentlich für alle backups)

Ein Script kann z.b. so aussehen

#!/bin/sh
#Aktuelles Datum für Dateinamen setzen
DATUM=`/bin/date +%Y-%m-%d`
# Backup Database:
mkdir /var/backups/mysql_$DATUM
cd /var/backups/mysql_$DATUM
mysqldump –opt –user=<root_user>–password=<root_user_pw> –all-databases > mysql_dump.sql
cd /var/backups/mysql_$DATUM
gzip  mysql_dump.sql
cd ..
tar cfv mysql_$DATUM.tar mysql_$DATUM

rm -r mysql_$DATUM

was macht das Script jetzt?

Es legt sich unter /var/backups/ einen ordner mit dem aktuellen datum an, wechselt in diesen und führt in mysql_$DATUM den befehl vom mysqldump aus, in diesem fall erstellt das script einen dump von der ganzen mysql DB

VORSICHT – bei einer gewachsenen DB kann der dump schon mal einige GB groß werden.

So nun nach dem Dumpen, wird der Dump selber als $DATUM.gzip gespeichert, das Verzeichnis um eine ebene gewechselt und der ganze Ordner noch als mysql_$DATUM.tar gespeichert und die Temporären Dateien werden gelöscht, übrig bleibt nur eine gut verpackte Datenbank

Das gleiche kann man auch mit anderen WebServern machen z.B. mit meinem Public Teamspeak, das Script dafür ist fast gleich aufgebaut wenn man mal den teil mit der Mysql DB wegläst

#bin/bash
DATUM=`/bin/date +%Y-%m-%d`
# Backup Database:
mkdir /var/backups/ts_$DATUM
cd /var/backups/ts_$DATUM
cp -R /PFAD/ZUM/SERVER /var/backups/ts_$DATUM
cd ..
tar cfv ts_$DATUM.tar ts_$DATUM
rm -r ts_$DATUM

Nun bringt es aber nichts Scripte anzulegen, wenn man sie immer selber anstupsen muss damit sie in gang kommen, dazu eignet sich „crontab“ wunderbar. Wir bearbeiten die crontab ( zu finden unter vim /etc/crontab ). Nach der letzten Zeile fügen wir ein z.b.

@daily root /PFAD/ZUM/SCRIPT/backup_ts.sh
@daily root /PFAD/ZUM/SCRIPT/mysql_backup.sh

was machen diese 2 zeilen nun ?

@daily <- tägliches Backup, das script wird pünktlich um 12 Uhr nachts ausgeführt
root <-  der Benutzer der das Script ausführen soll
der rest klärt sich von alleine ;)

Der 3. Punkt auf der liste ist der einfachste, nach dem entpacken des backups in einen entsprechenden ordner kann man nun z.b den mysql dump wieder einspielen mit

mysql -u root -p < mysql_dump.sql

oder im fall vom teamspeak einfach das Startscript vom server ausführen

das war es an der stelle mit den Scripts vom backup auch schon

have fun

ALEX_DPSG

Kommentar verfassen