backup-script-collection/mariadb-backup.v1.sh
2023-09-03 19:49:45 +02:00

49 lines
1.8 KiB
Bash

#!/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