Sicherungen die mit diesem Script erstellt wurden, können auch mit der MySQL-Workbench als Projekt importiert werden. Es kann die gesamte Datenbank oder auch einzelne Tabellen damit zurück gesichert werden. Gesichert werden immer alle Datenbanken incl. der Views.
#!/bin/bash
### Variablen
##
##
###### Sicherungspfad
##
Jetzt=$(date +"%Y-%m-%d")"-("$(date +"%H-%M")")"
Pfad="/Sicherungspfad/"$Jetzt"/"
##
###### mysqldump optionen
##
Opt1="-uuser -p"'PassWord'""
Opt2=" --create-options --databases --max_allowed_packet=1G --host=localhost --complete-insert=TRUE --port=3306 --default-character-set=utf8 "
##### Parameter für den Export der Datenbanktabellen
Opt3=" --host=localhost --protocol=tcp --port=3306 --default-character-set=utf8 --complete-insert=TRUE --skip-triggers "
BACKUPDIR=$Pfad
DBS=`mysql $Opt1 -e 'show databases;'`
### Ist das Sicherungslaufwerk vorhanden
if [ ! -d "SicherungsPfad" ]
then
mount SicherungsPfad
fi
if [ ! "$?" = "0" ]
then
echo "Sicherungspfad kann nicht verbunden werden"
echo "MySql Datensicherung konnte nicht durchgefuehrt werden, Grund: Sicherungspfad kann nicht verbunden werden!" | mail -s "MySql Datensicherung Fehler" DeineEmail-Adresse
exit 1
fi
mkdir $BACKUPDIR
### Datenbanken durchlaufen
for DATABASE in $DBS
do
if [ $DATABASE != "Database" ]; then
if [ ! -d $BACKUPDIR$DATABASE ]; then
#### Tabellen Sichern
TBS=`mysql $Opt1 -e "show full tables from "$DATABASE" where Table_Type = 'BASE TABLE';"`
for tb in $TBS
do
if [ $tb != "BASE" ] && [ $tb != "TABLE" ] && [ $tb != "Tables_in_"$DATABASE ] && [ $tb != "Table_type" ]
then
echo $DATABASE " >>> " $tb
mysqldump --result-file=$BACKUPDIR$DATABASE"_"$tb".sql" $Opt1 $Opt3 $DATABASE $tb
fi
done
#### Views Sichern, altes File loeschen
if [ -e views_$DATABASE.txt ]
then
rm views_$DATABASE.txt
fi
TBS=`mysql $Opt1 -e "show full tables from "$DATABASE" where Table_Type = 'VIEW';"`
for tb in $TBS
do
if [ $tb != "BASE" ] && [ $tb != "VIEW" ] && [ $tb != "Tables_in_"$DATABASE ] && [ $tb != "Table_type" ]
then
echo $tb " " >> views_$DATABASE.txt
echo $DATABASE " >>> " $tb
###mysqldump --result-file=$BACKUPDIR$DATABASE"_"$tb".sql" $Opt1 $Opt3 $DATABASE $tb
fi
done
if [ -e views_$DATABASE.txt ]
then
views=$(cat views_$DATABASE.txt)
mysqldump --result-file=$BACKUPDIR$DATABASE"_"$tb_"routines.sql" $Opt1 $Opt3 $DATABASE $views
fi
fi
fi
done
# SQL-Files Komprimieren
DateiName="MySQL-Sicherung.tar.gz"
tar -zcvf $BACKUPDIR$DateiName $BACKUPDIR*.sql > /dev/null
# Anschliessend Aufraeumen
if [ -e $BACKUPDIR$DateiName ]
then
rm $BACKUPDIR*.sql
fi
echo "MySql Datensicherung erfolgreich durchgefuehrt: Sicherungspunkt: "$BACKUPDIR | mail -s "MySql Datensicherung erfolgreich" DeineEmail-Adresse