Automatically E-mail MySQL Database Backup

If you are in a hosting environment where you are responsible for your own database backups, this is a convenient way to have the server generate a backup file of all of your MySQL databases, compress the file, and e-mail it to the specified address. I’ve added this to the local crontab so that it runs on a regular schedule. In order for it to work, you should have a MySQL user account created with the appropriate privileges in order to access your database.

In the crontab, create an entry, as follows, with your customization for both the path to your configuration file and the e-mail address receiving the backup.

mysqldump --defaults-extra-file="/path/to/config/file/.mysqldump.cnf"
          --all-databases
          -ce
  | gzip
  | uuencode dbbackup.gz
  | /usr/sbin/sendmail my_e-mail_address

In the .mysqldump.cnf file, provide the username and associated password that can access the database. Secure .mysqldump.cnf by setting the file permissions 0600 since that file contains your database password in plaintext.

[client]
user=my_database_username
password=my_database_user_password

Further Reading

Leave a Comment