Skip to content

Instantly share code, notes, and snippets.

@ansidev
Last active August 13, 2020 05:42
Show Gist options
  • Save ansidev/5981631495a7edae23b99d69d006efc7 to your computer and use it in GitHub Desktop.
Save ansidev/5981631495a7edae23b99d69d006efc7 to your computer and use it in GitHub Desktop.
Simple Database backup and restore command for database which is running in Docker
DB_HOST=
DB_DATABASE=
DB_USERNAME=
DB_PASSWORD=

Simple Database Backup and Restore Command

Simple Database backup and restore command for database which is running in Docker

Getting started

  • Download db.sh and .env.example.
  • Copy .env.example to .env if .env does not exist.
  • Add value for database environment variable.

Usage

  1. Backup database
bash db.sh -b

OR

bash db.sh --backup
  1. Restore database
bash db.sh -r

OR

bash db.sh --restore
#!/bin/bash
set -e
source .env
BASE_PATH=$(dirname $0)
BACKUP_DIR=$BASE_PATH/backup
BACKUP_TIME=$(date +%Y%m%d-%H%M%S)
FILE_NAME=${DB_DATABASE}_${BACKUP_TIME}.sql
MODE=$1
[ -d ${BACKUP_DIR} ] || mkdir ${BACKUP_DIR}
if [[ "$MODE" == "--backup" || "$MODE" == "-b" ]]; then
docker exec ${DB_HOST} /usr/bin/mysqldump -u ${DB_USERNAME} --password=${DB_PASSWORD} ${DB_DATABASE} > $BACKUP_DIR/$FILE_NAME
echo "Creating back up file $BACKUP_DIR/$FILE_NAME"
echo "Database was backed up successfully."
elif [[ "$MODE" == "--restore" || "$MODE" == "-r" ]]; then
cat $BACKUP_DIR/$FILE_NAME | docker exec -i ${DB_HOST} /usr/bin/mysql -u ${DB_USERNAME} --password=${DB_PASSWORD} ${DB_DATABASE}
echo "Restoring the database from file $BACKUP_DIR/$FILE_NAME"
echo "Database was restored successfully."
else
echo -e "Supported options:"
echo -e "-b|--backup\tBackup database"
echo -e "-r|--restore\tRestore database"
fi
echo "Exiting..."
exit 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment