DEV Community

Daniel Pepuho
Daniel Pepuho

Posted on • Edited on

How to back up and restore MySQL database on Linux using cron

1. Make new .sh file on root directory called mysql_backup.sh.

#!/bin/bash
# This script will backup the database
# and store in a specified directory.

# Constants

# Database credentials
USER="dev"
PASS="mypass123!"
DB_NAME="mydb"
HOST="localhost"
BACKUP_DIRECTORY="/root/backup_db"

# Add time stamp ( formated YYYYMMDD + HHMMSS)
# uses for the file name
CURRENT_DATE=$(date "+%Y%m%d-%H%M%S")

# Run mysqldump command
# we will backup the database into a .gz file
mysqldump -h ${HOST} \
-u ${USER} \
-p${PASS} \
${DB_NAME} | gzip - > $BACKUP_DIRECTORY/$DB_NAME\_$CURRENT_DATE.sql.gz
Enter fullscreen mode Exit fullscreen mode

2. Change file permissions

$ chmod 700 /root/mysql_backup.sh
or 
$ chmod u+rwx,g-rwx,o-rwx /root/mysql_backup.sh
Enter fullscreen mode Exit fullscreen mode

3. Add new cron using crontab.

crontab -e
Enter fullscreen mode Exit fullscreen mode

add this command at the end of the file so your database will be backup up every 30 minutes.

*/30 * * * * bash /root/mysql_backup.sh > /dev/null 2>&1 
Enter fullscreen mode Exit fullscreen mode

4. To restore the file into your database you can run this command:

$ gunzip -c ...sql.gz | mysql -h localhost -U DB_NAME -u USER -p
Enter fullscreen mode Exit fullscreen mode

Thank you for reading my post.

Top comments (0)