61 lines
1.4 KiB
Bash
61 lines
1.4 KiB
Bash
#!/bin/bash
|
|
|
|
if [ "$(id -u)" != "0" ]; then
|
|
echo -e "\033[31mThis script requires superuser rights\033[0m"
|
|
exit 0
|
|
fi
|
|
|
|
if [ -z "$1" ]; then
|
|
echo "Please provide the MYSQL_DB as argument"
|
|
exit 1
|
|
fi
|
|
|
|
SECRETS_PATH=/data/secrets/$SERVER_DOMAIN/$SERVER_DOMAIN.env
|
|
|
|
trap 'echo -e "\033[31mmariadb.sh: Something went wrong\033[0m"; exit 1' ERR
|
|
set -e
|
|
|
|
export DEBIAN_FRONTEND=noninteractive
|
|
|
|
source $SECRETS_PATH
|
|
|
|
if [ -z "$MARIADB_ROOT_PASSWORD" ]; then
|
|
echo "Error: MARIADB_ROOT_PASSWORD is not set or is empty"
|
|
exit 1
|
|
fi
|
|
|
|
MYSQL_DB="$1"
|
|
MYSQL_USER=root
|
|
|
|
CURRENT_MONTH=$(date +%Y-%m)
|
|
CURRENT_DATE=$(date +%Y-%m-%d)
|
|
CURRENT_DATETIME=$(date +%d-%m-%Y_%H%M%S)
|
|
BACKUPS_PATH=/backups/mariadb
|
|
DOCKER_SERVICE_NAME=mariadb
|
|
|
|
BACKUP_FOLDER=$BACKUPS_PATH/$MYSQL_DB
|
|
|
|
echo 'check BACKUP_FOLDER...'
|
|
mkdir -p "$BACKUP_FOLDER"
|
|
|
|
echo 'Creating mariadb backups...'
|
|
cd "$BACKUP_FOLDER"
|
|
if [ -f 'dump_'"$MYSQL_DB"'.sql' ]; then
|
|
rm 'dump_'"$MYSQL_DB"'.sql'
|
|
fi
|
|
DB_BACKUP_FILENAME=$MYSQL_DB'_'$CURRENT_DATETIME'.tar.gz'
|
|
|
|
echo 'Exec mariadb-dump...'
|
|
docker exec -t $DOCKER_SERVICE_NAME mariadb-dump -u $MYSQL_USER -p$MARIADB_ROOT_PASSWORD $MYSQL_DB > 'dump_'"$MYSQL_DB"'.sql'
|
|
|
|
echo 'Pack to tar.gz...'
|
|
tar -cf - 'dump_'"$MYSQL_DB"'.sql' | gzip -9 > "$DB_BACKUP_FILENAME"
|
|
rm 'dump_'"$MYSQL_DB"'.sql'
|
|
|
|
cd "$BACKUP_FOLDER"
|
|
|
|
echo 'Write md5 sum...'
|
|
md5sum * > MD5SUMS
|
|
|
|
trap - ERR
|
|
echo 'The backup of the '"$MYSQL_DB"' database was completed successfully' |