Mysql Sicherungsscript

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