#!/usr/bin/env bash
#
# DB backuper ver 1.0
#
# Skrypt do wykonywania kopii bazy danych MariaDB/Mysql
#
# Wymagane uprawnienia dla uzytkownika backuper po stronie bazy danych:
# Select_priv, Insert_priv, Create_priv, Reload_priv, File_priv, Alter_priv,
# Show_db_priv, Super_priv, Lock_tables_priv, Show_view_priv
#
# by Krzysztof 'zmijka' Zmijewski
# Nazwa uzytkownika w Bazie Danych wykorzystywana do robienia backup'a
DBUSER="backuper"
# Haslo uzytkownika
DBPASS=""
# Adres IP lub HOST bazy danych
DBHOST="127.0.0.1"
# Sciezka do plikow binarnych bazy danych
DBPATH="/usr/bin"
# Katalog tymczasowy
DBTMP="/home/../DBbackuper/tmp"
# Sciezka do katalogu z backup'ami
DBTARGET="/home/../DBbackuper/bkp"
# Sciezka do pliku logow
DBLOG="/.../DB_backuper.log"
# Format daty umieszczany w nazwie pliku kopii
DBDATA=`/bin/date +%d-%m-%Y`
# Sprawdzamy czy baza danych dziala
DBALIVE=$(pgrep mysqld | wc -l);
if [ $DBALIVE -eq 0 ]
then
echo $DBDATA - "Nie wykonano kopii z powodu nie dzialajacej Bazy Danych !!!" >> $DBLOG
else
# Kasujemy zawartosc katalogu tymczasowego $DBTMP
rm -rf $DBTMP/*
# Blokujemy bazy danych
$DBPATH/mysql --user=$DBUSER --password=$DBPASS --host=$DBHOST -e "FLUSH TABLES WITH READ LOCK;"
# Tworzymy liste baz danych
DBCHECK=`$DBPATH/mysql --user=$DBUSER --password=$DBPASS --host=$DBHOST -e "SHOW DATABASES;" | tr -d "| " | grep -v Database`;
# Wykonanie backupu dla kazdej bazy z listy
for DBNAME in $DBCHECK
do
# warunkiem if odrzucamy wykonywanie kopii baz - information_schema, performance_schema
if [[ "$DBNAME" != "information_schema" ]] && [[ "$DBNAME" != "performance_schema" ]] && [[ "$DBNAME" != _* ]]
then
#wykonujemu zrzut bazy danych ktorej nazwa zawarta jest w zmiennej $DBNAME
$DBPATH/mysqldump --force --opt --user=$DBUSER --password=$DBPASS --host=$DBHOST $DBNAME > $DBTMP/$DBNAME.sql
fi
done
# Odblokowanie baz danych
$DBPATH/mysql --user=$DBUSER --password=$DBPASS --host=$DBHOST -e "UNLOCK TABLES;"
# Archiwizujemy pliki baz danych
tar czf $DBTARGET/$DBDATA"_DB_Backup".tar.gz $DBTMP >> /dev/null
echo $DBDATA - "Wykonano kopie Bazy Danych" >> $DBLOG
# Kasujemy zawartosc katalogu tymczasowego $DBTMP
rm -rf $DBTMP/*
fi
syntax highlighted by Code2HTML, v. 0.9.1