MySQL Datenbanken sichern
Zur Navigation springen
Zur Suche springen
alle Datenbanken sichern
Sichert alle Datenbanken in eine Datei auf die lokale Platte, komprimiert sie und behält Backups x Tage.
#!/bin/bash
#
# MySQL DB Backup
#
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DB_USER="user"
DB_PASSWD="passwort"
OUT="/root/backup/mysql-backup"
DATE=`date +%Y-%m-%d_%H:%M`
ALT=`date +%Y-%m-%d -d "7 days ago"`
# Backup aller Datenbanken in eine einzelne Datei erstellen
mysqldump --user=$DB_USER --password=$DB_PASSWD --events --all-databases > $OUT'/mysqldump.'$DATE'.sql'
# komprimieren
nice -n 19 gzip $OUT'/mysqldump.'$DATE'.sql'
# alte Backups löschen die älter als in $ALT definiert sind
rm -rf $OUT'/mysqldump.'$ALT*
alle Datenbanken einzeln sichern
Sichert jede einzelne Datenbank in eine Datei auf die lokale Platte, komprimiert sie und behält Backups x Tage.
#!/bin/bash
#
# MySQL DB Backup
#
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DB_USER="user"
DB_PASSWD="passwort"
OUT="/root/backup/mysql-backup"
DATE=`date +%Y-%m-%d_%H:%M`
ALT=`date +%Y-%m-%d -d "7 days ago"`
for DB in $(mysql --user=$DB_USER --password=$DB_PASSWD -Bse 'show databases'); do
# für jede DB die nicht die Systemeigenen DB's "information-schema", "mysql" oder "performance_schema" sind:
# -sichere jede einzelne DB mit Namen. Ausgabe Bsp. mysqldump-DATENBANKNAME.2017-06-06_00:30.sql
# -komprimiere sie
# -lösche Backups die älter als X Tage sind wie in $ALT definiert (hier 7 Tage)
if [ "$DB" != "information_schema" ] && [ "$DB" != "mysql" ] && [ "$DB" != "performance_schema" ]; then
mysqldump --user=$DB_USER --password=$DB_PASSWD --events $DB > $OUT'/mysqldump-'$DB'.'$DATE'.sql'
nice -n 19 gzip $OUT'/mysqldump-'$DB'.'$DATE'.sql'
rm -rf $OUT'/mysqldump-'$DB'.'$ALT*
fi
done