Shell Script To Dump All MySQL Databases Every Hour To NAS Storage

in Backup, MySQL

+ Download this script

+ Modify settings according to your setup

+ Install cron job as follows to run script every hour

# Backup database every 1 hr to /nas
@hourly /root/scripts/db1hr.backup.sh >/dev/null 2>&1
 

Sample Shell Script To Dump All MySQL Databases

#!/bin/bash
# A simple shell script to backup all MySQL Server Database
# Dump all MySQL database every hour from raid10 db disk to /nas/mysql
# Each dump will be line as follows:
# Directory:  /nas/mysql/mm-dd-yyyy
# File: mysql-DBNAME.04-25-2008-14:23:40.gz
# Full path: /nas/mysql/mm-dd-yyyy/mysql-DBNAME.04-25-2008-14:23:40.gz
# -------------------------------------------------------------------------
# Copyright (c) 2005 nixCraft project <http://cyberciti.biz/fb/>
# This script is licensed under GNU GPL version 2.0 or above
# -------------------------------------------------------------------------
# This script is part of nixCraft shell script collection (NSSC)
# Visit http://bash.cyberciti.biz/ for more information.
# -------------------------------------------------------------------------
NOW=$(date +"%m-%d-%Y") # mm-dd-yyyy format
FILE="fs-full-$NOW.tar.gz"
BAK="/nas/mysql/${NOW}"
 
### Server Setup ###
#* MySQL login user name *#
MUSER="root"
 
#* MySQL login PASSWORD name *#
MPASS="YOUR-PASSWORD"
 
#* MySQL login HOST name *#
MHOST="127.0.0.1"
 
#* MySQL binaries *#
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
GZIP="$(which gzip)"
 
# assuming that /nas is mounted via /etc/fstab
if [ ! -d $BAK ]; then
  mkdir -p $BAK
else
 :
fi
# get all database listing
DBS="$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases')"
 
# start to dump database one by one
for db in $DBS
do
 FILE=$BAK/mysql-$db.$NOW-$(date +"%T").gz
 # gzip compression for each backup file
 $MYSQLDUMP -u $MUSER -h $MHOST -p$MPASS $db | $GZIP -9 > $FILE
done
Want to read Linux tips and tricks, but don't have time to check our blog everyday? Subscribe to our email newsletter to make sure you don't miss a single tip/tricks.

{ 4 comments… read them below or add one }

Samir October 2, 2008 at 6:26 pm

Elegant and very useful.
I love it, thanks.

Reply

Vinayak April 13, 2009 at 11:25 am

This script is very much useful.

After taking backup I want to dump the same in another Database [In some aother machine] How to do that?

The database name and everything should remain same in the another DB also.

My intention is to create Mirror Database.

Reply

XAN April 14, 2009 at 8:12 pm

Thank you Vivek it’s a great work!

Reply

fRank May 13, 2009 at 11:04 am

Better remove this line FILE=”fs-full-$NOW.tar.gz” because you already used FILE=$BAK/mysql-$db.$NOW-$(date +”%T”).gz

Reply

Leave a Comment

Previous post: Shell Script to Start and Login via Netgear WG311 Marvell 88w8335 Wireless Card

Next post: Shell Script To Clean Lighttpd Web Server Cache