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/