18 April, 2008

Automatic MySQL Backup

Automatic MySQL Backup

How AutoMySQLBackup started..

I needed to archive my MySQL databases and after searching for some way to do it I gave up and decided to write my own.. If you are here I guess you are looking for the same thing. Well lets hope you have found what you are looking for..

AutoMySQLBackup Script Features..

* Backup mutiple MySQL databases with one script. (Now able to backup ALL databases on a server easily. no longer need to specify each database seperately)
* Backup all databases to a single backup file or to a seperate directory and file for each database.
* Automatically compress the backup files to save disk space using either gzip or bzip2 compression.
* Can backup remote MySQL servers to a central server.
* Runs automatically using cron or can be run manually.
* Can e-mail the backup log to any specified e-mail address instead of "root". (Great for hosted websites and databases).
* Can email the compressed database backup files to the specified email address.
* Can specify maximun size backup to email.
* Can be set to run PRE and POST backup commands.
* Choose which day of the week to run weekly backups.

AutoMySQLBackup Download..

The AutoMySQLBackup project has now been moved to Sourceforge.net for better maintainence.
Click here for the Sourceforge page

Rate The AutoMySQLBackup Script...

Let others know what you think of it..
Rate My Script
@ HotScripts.com

Rate My Script
@ NeedScripts.com


AutoMySQLBackup Requirements..

I tried to keep the requirements to a minimum, I personally don't like scripts that have lots of requirements and that I have to spend hours getting the requirements sorted out before I can use the script.

The AutoMySQLBackup script only requires mysqldump (A standard utility provided with the mysql client) and gzip or bzip2 for compression of the backup files.
If you would like to have the log emailed to you then you will need to have permission to execute the "mail" program. If you want the compressed backup files mailed to you then Mutt must be available on the server.
Finally you will need a bash shell and the standard system tools and utilities (all these requirements should be the default on most linux system.)

What AutoMySQLBackup does..

Every day AutoMySQLBackup will run (if setup on /etc/cron.daily) and using mysqldump and gzip will dump your specified databases to the /backups/daily directory, it will rotate daily backups weekly so you should never have more than 7 backups in there..

Every Saturday AutoMySQLBackup will again backup the databases you have chosen but they will be placed into /backups/weekly, these will be rotated every 5 weeks so there should never be more than 5 backups in there..

Every 1st of the month AutoMySQLBackup will create a backup of all databases and place them into /backups/monthly. These will never be rotated so it will be up to you to do your own house keeping. I would suggest taking a copy of this offline every month or two so that if you have a hard drive failure you will be able to restore your database..

AutoMySQLBackup Installation..

The install is as simple as editing a few variables in the AutoMySQLBackup file. The full setup is documented in the AutoMySQLBackup script file below the variables section..

Here is a quick minimum setup step by step..
1. Download automysqlbackup.sh and place it into your /etc/cron.daily directory or your home directory.
2. Edit (at least) the following lines :-

USERNAME=dbuser (The user must have at least select privileges to the databases)
PASSWORD=password
DBNAMES="DB1 DB2 DB3" (make sure to keep the quotes " " otherwise it won't work)

3. Make the file executable :- chmod u+rwx
4. Create the following directory.

/backups

5. That's it.. Now you can run it using the command line "./automysqlbackup.sh" or if it is in /etc/cron.daily it will run each day when cron runs.