MySQL Backup Script
In one of my previous ProTips I mentioned my shell script that performs a backup of my MySQL database and then gzips it for a quicker download. I thought I'd share it with you today.
# backup-dbname
NOW=$(date +"%Y-%m-%d.%H-%M-%S")
mysqldump -uroot -p dbname > dbname.$NOW.sql
gzip dbname.$NOW.sql
You can then add the script to your PATH
(usually ~/myusername/bin/
or ~/bin
) so that all you have to do in your terminal is run backup-dbname
, or you could run the script absolutely (e.g. /path/to/backup-tablename
).
DISECTION
NOW=$(date +"%Y-%m-%d.%H-%M-%S")
In the above code, we declare the variable NOW
. Notice how there is no space either side of the equals sign. If the current date is the 17th of September 2014 at 14:56:30, then the variable NOW
will be equal to 2014-09-17.14-56-30
.
mysqldump -uroot -p dbname > dbname.$NOW.sql
This is the usual MySQL dump syntax. The >
means pipe the results in this direction, i.e. from the mysqldump function, to the file named dbname.$NOW.sql
. Change dbname
to the name of the table that you want to dump. If you only want to dump certain tables, do the following
# backup-dbname
NOW=$(date +"%Y-%m-%d.%H-%M-%S")
mysqldump -uroot -p dbname table1 table2 table3 tableN > dbname.$NOW.sql
gzip dbname.$NOW.sql
Obviously, replace tableX
with the names of the tables that you want to dump.
gzip dbname.$NOW.sql
The last line of code simply gzips the file.
Happy backing up! :v