MySQL-Backup-Skript – Kurzanleitung

Veröffentlichung 3. August 2018 @ 12:28
Letzte Änderung 21. April 2021 @ 7:42

Überblick

  • Lokale Sicherung von MySQL-Datenbanken
  • Automatisches Löschen alter Backup-Dateien

Voraussetzungen

Netzwerk

  • Benutzer root
  • Datenbank example
  • MySQL-Benutzer root

Software

  • MySQL 5.7.22 #mysql –version
  • Ubuntu Server 16.04.04 LTS #lsb_release -a

Ordner und Dateien

  • Backup /root/backup/example.sql, /root/backup/example/example*.sql
  • Konfiguration /root/.my.cnf
  • Skript /root/scripts/backup_database.sh

MySQL-Konfigurationsdatei für Skriptausführung ohne Passwortabfrage anlegen

Konfigurationsdatei erstellen

[client]
user=root
password=***

Zugriffsrechte anpassen

chmod 0600 /root/.my.cnf

Bash-Skript zur lokalen Sicherung von MySQL-Datenbanken erstellen

Backup-Skript anlegen

#!/bin/bash
DATABASE=$1 #Datenbankname
BACKUPNAME=$2 #Backup-Name
BACKUPDIR=$3 #Backup-Hauptverzeichnis
OPTIONFILE=$4 #MySQL-Optionsdatei
USERGROUP=$5 #Benutzer und Gruppe der Backup-Datei
BACKUPMAXAGE=$6 #maximales Alter der Backup-Dateien in Tagen
DATETIME="$(date +%Y-%m-%d-%H-%M-%S)"
if [ ! -d "$BACKUPDIR/$BACKUPNAME" ]; then
mkdir --mode=0700 $BACKUPDIR/$BACKUPNAME
chown $USERGROUP:$USERGROUP $BACKUPDIR/$BACKUPNAME
fi
find $BACKUPDIR/$BACKUPNAME -mtime +$BACKUPMAXAGE -name "$BACKUPNAME-*.sql" -type f -exec rm {} \;
mysqldump --defaults-extra-file=$OPTIONFILE $DATABASE > $BACKUPDIR/$BACKUPNAME/$BACKUPNAME-$DATETIME.sql
ln -fs $BACKUPDIR/$BACKUPNAME/$BACKUPNAME-$DATETIME.sql $BACKUPDIR/$BACKUPNAME.sql
chown -h $USERGROUP:$USERGROUP $BACKUPDIR/$BACKUPNAME/$BACKUPNAME-$DATETIME.sql $BACKUPDIR/$BACKUPNAME.sql
chmod 0600 $BACKUPDIR/$BACKUPNAME/$BACKUPNAME-$DATETIME.sql

Zugriffsrechte anpassen

chmod 0700 /root/scripts/backup_database.sh

Beispiel

Datenbank example sichern

/root/scripts/backup_database.sh example example /root/backup /root/.my.cnf root 30

Aktuelles Datenbank-Backup rücksichern

mysql --defaults-extra-file=/root/.my.cnf example < /root/backup/example.sql

Quellen

https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html
https://dev.mysql.com/doc/refman/5.7/en/option-files.html
https://www.gnu.org/software/bash/manual/