mysql-backup/restore-mysql.sh

66 lines
1.5 KiB
Bash
Executable File

#!/usr/bin/env bash
USER="root"
PASSWORD="secretpass"
OUTPUT_DIR="./output"
HOSTNAME="127.0.0.1"
GZIP_ENABLED="1"
USE_PASSWORD="0"
USE_HOSTNAME="0"
set -a # automatically export all variables
source .env
set +a
if [ "${DEBUG}" -gt "0" ]
then
set -x
fi
PASSWORD_OPTIONS="-p${PASSWORD}"
HOST_OPTIONS="-h ${HOSTNAME}"
if [ "${USE_HOSTNAME}" -eq "0" ]
then
HOST_OPTIONS=""
fi
if [ "${USE_PASSWORD}" -eq "0" ]
then
PASSWORD_OPTIONS=""
fi
databases=$(ls ${OUTPUT_DIR})
for db in ${databases}; do
if [[ "${db}" != "information_schema" ]] && [[ "${db}" != "performance_schema" ]] && [[ "${db}" != "mysql" ]] && [[ "${db}" != _* ]]
then
GZIP="0"
DUMP_DIR="${OUTPUT_DIR}/${db}"
NEWEST_DUMP_FILENAME="$(ls -Art ${OUTPUT_DIR}/${db} | tail -n 1)"
DUMP_FILENAME="${DUMP_DIR}/${NEWEST_DUMP_FILENAME}"
file "${DUMP_FILENAME}" | grep "gzip compressed data" >/dev/null
if [ "$?" -eq "0" ]
then
GZIP_ENABLED="1"
else
GZIP_ENABLED="0"
fi
echo "Restoring database: ${db} from: ${DUMP_FILENAME}"
echo "Trying to create the DB:"
mysql ${HOST_OPTIONS} -u ${USER} ${PASSWORD_OPTIONS} --default-character-set=utf8mb4 -e "CREATE DATABASE ${db} CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
echo "Restoring DB from backup file"
if [ "${GZIP_ENABLED}" -gt "0" ]
then
gunzip "${DUMP_FILENAME}" | mysql ${HOST_OPTIONS} -u ${USER} ${PASSWORD_OPTIONS} --default-character-set=utf8mb4 ${db}
else
cat "${DUMP_FILENAME}" | mysql ${HOST_OPTIONS} -u ${USER} ${PASSWORD_OPTIONS} --default-character-set=utf8mb4 ${db}
fi
fi
done
set +x