Auf Webservern sollten täglich Backups von der Datenbank erstellt werden. Diese dienen nicht als Notlösung, sollte die Festplatte ausfallen, sondern auch zur Versionierung, falls das CMS oder andere Dienste versagen. Ubuntu bietet seit geraumer Zeit in den Repositorys ein gutes Skript dafür an. Es nennt sich AutoMySQLBackup und ist es selbstständiges Shellskript, dann mittels Mysqldump regelmäßig einen komprimierten Dump speichert.
Um das ganze auf dem Server einzurichten, gibt es schon verschiedene Anleitungen im Netz. Ich habe es noch der Anleitung für ein Ubuntu 9.10 gemacht und es war so auch für 10.04 gültig.
Leider überschreibt das Skript bei jedem Aufruf das letzte Backup vom vorherigen Aufruf. Deshalb habe ich ein Skript geschrieben, womit die Dumps aufbewahrt werden können. Dazu ändert man in der Konfiguration /etc/default/automysqlbackup folgende Parameter:
# Additionally keep a copy of the most recent backup in a seperate
# directory.
LATEST=yes
# Command run after backups (uncomment to use)
POSTBACKUP="/opt/mysqlbackuppost.sh"
Danach kopiert man mein Skript an die Stelle /opt/mysqlbackuppost.sh und macht die Datei ausführbar. Das Verzeichnis /var/lib/automysqlbackup/bydate/ muss dann noch angelegt werden.
Bei jedem Aufruf von automysqlbackup wird nun zuerst der Dump erstellt. Dieser wird dann in einem Verzeichnis, benannt nach dem Datum gespeichert. Außerdem werden ältere Backups automatisch gelöscht. Dabei bleiben aber bestimmte Versionen erhalten:
- Letzte 30 Tage
- 1. jeden Monats
- 1. jeden Jahres
Das Skript gibt es im Downloadbereich.
Die Sicherung liegt dann aber auf der selben Festplatte, oder?
Das ist richtig. Mehr brauchen wir bei unseren Server nicht, da der jeden Tag komplett gesichert wird. Dabei werden dann auch diese Kopien der Datenbank mit gesichert.
30 Tage Backup ist schon toll, mir würden jedoch 7 Tage reichen und ohne Wochen, Monats und Jahres Backup.
Kann man das wo ändern?
Ja. Musst du einfach in dem Shellskript die jeweiligen Zeilen ändern.
Zeile 29 statt 30 eine 7.
Und die beiden Schleifen in Zeile 35 und 42 können weg.
Die Config sieht so aus.
# Which day do you want monthly backups? (01 to 31)
# If the chosen day is greater than the last day of the month, it will be done
# on the last day of the month.
# Set to 0 to disable monthly backups.
#CONFIG_do_monthly=“01″
# Which day do you want weekly backups? (1 to 7 where 1 is Monday)
# Set to 0 to disable weekly backups.
#CONFIG_do_weekly=“5″
# Set rotation of daily backups. VALUE*24hours
# If you want to keep only today’s backups, you could choose 1, i.e. everything older than 24hours will be removed.
#CONFIG_rotation_daily=6
# Set rotation for weekly backups. VALUE*24hours
#CONFIG_rotation_weekly=35
# Set rotation for monthly backups. VALUE*24hours
#CONFIG_rotation_monthly=150
Müsse ich also folgendes einstellen?
Dann werden 14 Tages Backups erstellt und alles was älter ist wird gelöscht?
CONFIG_rotation_daily=14
Achso. Sollte mit 14 funktionieren.
Ich würde einfach mal vorschlagen: ausprobieren.
Kannst ja berichten, ob es geklappt hat.