CentOS编写sh脚本自动备份mysql数据库并发送邮件

为了保证数据库得到及时备份,编写一个sh脚本,定时备份数据库并且发送邮件给指定人员。

首先,创建sh脚本,例如 vi /alidata/www/automysqlbackup.sh

代码如下:

#!/bin/sh
#File: /alidata/www/automysqlbackup.sh

#变量定义
DATE=`date +%Y%m%d`

/alidata/server/mysql/bin/mysqldump -uroot -p123456 bangtai > /alidata/www/backups/bangtai.sql
tar zcvf /alidata/www/backups/db_${DATE}.sql.tar.gz /alidata/www/backups/bangtai.sql
echo "数据库备份" | /usr/bin/mutt -a /alidata/www/backups/db_${DATE}.sql.tar.gz -s "数据库备份数据"-b [email protected]
rm -rf /alidata/www/backups/*


红色标注的需要特别注意,变量DATE后的等号两侧不能有空格,否则会把DATE当成一个命令继而报错。

其次-u和-p后面紧跟账号和密码,也不能有空格!

再次 邮箱前面需要加-b,否则发送带附件的邮件发送失败!


创建自动任务

crontab -e

输入一下内容

00 23 * * * /alidata/www/automysqlbackup.sh

这样就实现了每天23:00自动备份mysql数据库并发送到Email

如果需要一次性备份多个数据库,可以改成

mysqldump -uuser -ppassword –databases db1 db2 db3 > /alidata/www/backups/databackup.sql

但是这个要你用root权限的用户才可以的..-u后面的是数据库用户名 -p后面的是数据库密码 无需空格 db1 db2 db3为你需要备份的数据库名。


如果你的数据库用户名没有root这个权限,可以改为这样:

mysqldump -uuser -ppassword db1 > /alidata/www/backups/db1.sql
mysqldump -uuser -ppassword db2 > /alidata/www/backups/db1.sql
mysqldump -uuser -ppassword db3 > /alidata/www/backups/db1.sql


你可能感兴趣的:(CentOS编写sh脚本自动备份mysql数据库并发送邮件)