helper/mysqlBackup.sh
2022-06-08 21:49:12 +02:00

45 lines
1.2 KiB
Bash
Executable file

#!/usr/bin/env bash
MYSQLDIR="/var/lib/backups/mysql"
MYSQLOPTIONFILE="/root/.my.cnf"
DAYS="30"
set -e
umask 0077
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin:/root/bin:/sbin:/usr/sbin
if ! pgrep mysqld > /dev/null ; then
echo "no mysqld running!"
exit 0
fi
mkdir -p "$MYSQLDIR"
for db in $(mysql "--defaults-file=$MYSQLOPTIONFILE" -u backupuser -s -N -e 'SHOW DATABASES;'); do
if [[ "$db" != "information_schema" ]] ; then
#echo -e "==> Backing up database $db"
BACKEDUP="$BACKEDUP $db"
file=$MYSQLDIR/mysqldump-$db-$(date +%F_%H-%M).sql
mysqldump "--defaults-file=$MYSQLOPTIONFILE" -u backupuser --opt --single-transaction --databases "$db" | bzip2 > "$file.bz2"
fi
done
count=0
#echo -e "\n==> Searching $MYSQLDIR for backups older than $DAYS days..."
for file in $(find "$MYSQLDIR" -type f -mtime "+$DAYS"); do
#echo "rm $file"
DELETED="$DELETED $(basename "$file")"
rm "$file"
count=$(($count+1))
done
if [[ -n "$BACKEDUP" ]] ; then
echo "Backed up databases: $BACKEDUP"
else
echo "no database backed up"
fi
if [[ -n "$DELETED" ]] ; then
echo "<== End: $count backups removed:" #${DELETED}"
else
echo "No old backups removed!"
fi