2023-09-03 17:49:03 +00:00
|
|
|
#!/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"
|
2023-09-03 17:49:45 +00:00
|
|
|
EMAIL_ADDRESS="deine@mail.de"
|
2023-09-03 17:49:03 +00:00
|
|
|
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
|