MySQL

MySQL Datenbank Backup anlegen unter Linux

Hier möchte ich euch kurz Zeigen wie Ihr ein Backup eurer MySQL Datenbank anlegen könnt. Dazu nutzen wir ein Bash Skript das naher via Cronjob ausgeführt werden kann.

Das Bash Skript könnt ihr abspeichern wo Ihr möchtet, bei mir heisst die Datei mysql-backup.sh die Endung ist wichtig!

Mit folgendem Befehl könnt Ihr eure neue Datei öffnen und bearbeiten.

nano mysql-backup.sh

Danach könnt Ihr diese Skript kopieren und nach folgendes dabei abändern:

#!/bin/bash
#
# dieses Skript kann man beliebig oft ausführen
#
# Anzahl der Sicherungen die aufgehoben werden sollen
KEEP=30
BACKUPS=`find /mnt/Backup-Extern/MySQL -name "mysql-backup-*.gz" | wc -l | sed 's/\ //g'`
while [ $BACKUPS -ge $KEEP ]
do
ls -tr1 /mnt/Backup-Extern/MySQL/mysql-backup-*.gz | head -n 1 | xargs rm -f
BACKUPS=`expr $BACKUPS - 1`
done
DATE=`date +%Y.%m.%d-%H%M`
rm -f /mnt/Backup-Extern/MySQL/.mysql-backup-${DATE}.gz_INPROGRESS
mysqldump --opt -uuser -ppassword --all-databases | gzip -c -9 > /mnt/Backup-Extern/MySQL/.mysql-backup-${DATE}.gz_INPROGRESS
mv -f /mnt/Backup-Extern/MySQL/.mysql-backup-${DATE}.gz_INPROGRESS /mnt/Backup-Extern/MySQL/mysql-backup-${DATE}.gz
exit 0


In der Zeile 6 findet Ihr KEEP=30  => hier wird angeben wie viele Sicherungen aufgehoben werden sollten.

In der Zeile 7, 10, 14, 15 + 16 muss der Pfad angegeben werden wo das Backup gespeichert werden soll „/mnt/Backup-Extern/MySQL“, ebenfalls muss die Bezeichnung der Datei angepasst werden „mysql-backup“. Die Datei wird dan in eine Zip-Datei gespeichert.

In der Zeile 13 wird die zusätzliche Bezeichnung der Datei angegeben „+%Y.%m.%d-%H%M“ Y=Jahr, m=Monat, d=Tag, H=Stunde, M=Minute. Das heisst jede Datei wird mit einem Zeit Stempel versehen und sieht dan z.B. so aus: „mysql-backup-2016.11.05-1004.gz“

In der Zeile 15 muss der Benutzer und das Passwort angegeben werden, welche natürlich Zugriffsrechte besitzt. Achtung Datei muss beachtet werden dass das -u sowie -p mit dem Benutzer Name und Passwort anhängend geschrieben wird. Siehe Skript! Mit dem Befehl „–all-databases“ wird die Komplette Datenbank gesichert!

 

Wenn Ihr dieses Skript nun gespeichert habt können wird nun einen Cronjob erstellen, für dies öffnen wir zuerst mal den crontab mit einem Editor

nano /etc/crontab

Danach sieht das ganze wie folgt aus und die unterste Zeile führt unser Skript jeden Morgen um 4 Uhr aus.

# m h dom mon dow user  command

#MySQL Backup täglich um 4 Uhr
0 4     * * *   root     sh /home/user/mysql-backup.sh

 

Eine genaue Anleitung über die Zeitliche Einstellungen von Cronjobs findet Ihr unter wiki.ubuntuusers.de/Cron/ , die Erklärung auf dieser Seite finde ich wirklich toll.

 

Somit wäre das Backup von der MySQL Datenbank eingerichtet…

 

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.