Okay, I’ve been running dedicated servers for couple years now and I used to mess around with Linux boxes back in college.
Here’s an essential automatic script and a cron job you will need in order to keep your backup automatic.
Yes, if you get a dedicated server, don’t get their stupid extra $15/month for backing up your database. (All they do is make scripts like this one and charge you for it)
You can follow this example and go spend that money on junk food.
So all you have to do is FTP your backup files.
This is way better than going into your phpMyAdmin and downloading from the web interface since the file is already ready for you to download.
Here’s how you do it:
1) Make a new file called backup.sh in your home directory. 2) Use the following syntax:
mysqldump -u[USERNAME] -p[PASSWORD] --opt [DATABASE NAME] > /root/backup/DATABASE1.sql
Here’s an example backup.sh file if you had 2 databases:
mysqldump -uUser1 -pPassword1 --opt Database1 > /root/backup/Database1.sql mysqldump -uUser2 -pPassword2 --opt Database2 > /root/backup/Database2.sql tar cvf /root/backup/sqlbackup.tar /root/backup/*
You can test your script by typing this:
sh backup.sh
(The mysqldump will overwrite the older file if you run this more than once)
3) If everything is working good, now you can put that script to be run once a day in your cron job.
For Fedora Core, you can edit this file /etc/cron.d/sa-update
Add the following line:
10 3 * * * root sh /root/backup/backup.sh
This will execute the script once a day at 3:10AM.
Now simply download one tar ball file whenever you feel like backing up your database.
You can probably change this a little bit and use it for many other things like backing up all your files too. (which I do)
If you have multiple servers like me, you can also automate your scripts to download backup databases to each server. That keeps things real redundant in case of server failure.
5 Responses to DIY Linux Web Server HACK – Automate your MySQL MySQL database backups
Leave a Reply

Very useful script. Thanks.
http://packratstudios.com
To further automate the process of backing up, you should set up a LOCAL cron job that downloads the file to your computer.
Which is just as easy…. all ya do fetch the remote file:
wget ftp://Username:Password@www.yoursite.com/backup/sqlbackup.tar
true, that’s if you are using Linux…wait a minute, why am i not using linux!?!
glad it helped!
Cool script.
I’ve always used a software product to backup my DBs – it was something like database backup generator.
You set it to run daily and it’ll back up, email you a download link, and also store as many backups as you need.
The thing I liked was that you could restore the DB with one click from the admin panel.
Craig