MySQL Datenbanken sichern

Aus Dirk's Wiki
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