#!/bin/bash # Script Name: MARIADB_BACKUP.V1.SH # Beschreibung: Macht ein Backup aller MariaDB-Datenbanken in ein Verzeichnis der Wahl # Aufruf: ./bash MARIADB_BACKUP.V1.SH # Autor: Patrick Asmus # Web: https://www.media-techport.de # Git-Reposit.: https://git.media-techport.de/scriptos/backup-script-collection # Version: 2.0 # Datum: 03.09.2023 # Modifikation: Neuerstellung ##################################################### # Variablen SCRIPT_NAME="mariadb-backup.v1.sh" BACKUP_DIR="/var/backup" LOGDIR="/var/log/script-logs" EMAIL_ADDRESS="deine@mail.de" HOSTNAME=$(hostname) DB_USER="mysqlbackup" DB_PASSWORD="PASSWORD" BACKUP_RETENTION_DAYS=20 # Erstelle Log-Verzeichnis mkdir -p $LOGDIR # Sichern jeder Datenbank in separater SQL-Datei DATABASES=$(mysql -u "$DB_USER" -p"$DB_PASSWORD" -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema|mysql|sys)") ERROR_OCCURRED=0 for DB in $DATABASES; do DATE=$(date +%F) BACKUP_FILE="$BACKUP_DIR/$DB-$DATE.sql" echo "Sichere $DB-Datenbank in $BACKUP_FILE" | tee -a "$LOGDIR/$SCRIPT_NAME.log" mysqldump -u "$DB_USER" -p"$DB_PASSWORD" "$DB" > "$BACKUP_FILE" if [ $? -ne 0 ]; then ERROR_OCCURRED=1 echo "Fehler beim Sichern der $DB-Datenbank" | tee -a "$LOGDIR/$SCRIPT_NAME.log" fi done # Loeschen von Backups, die aelter als X Tage sind find "$BACKUP_DIR" -type f -name "*.sql" -mtime +$BACKUP_RETENTION_DAYS -delete # Ueberpruefe, ob das Backup erfolgreich war oder Probleme aufgetreten sind if [ $ERROR_OCCURRED -eq 1 ]; then echo "Backup konnte nicht ausgefuehrt werden." | tee -a "$LOGDIR/$SCRIPT_NAME.log" mail -s "Fehler beim Ausführen des MariaDB-Backups auf $HOSTNAME" "$EMAIL_ADDRESS" < "$LOGDIR/$SCRIPT_NAME.log" fi exit 0