转载备份。


以下脚本保存为 /etc/mysql_backup/mysql_backup.sh

#!/bin/bash

dbserver='127.0.0.1'
dbuser='root'
dbpasswd='password'
dbname='test_db'
backtime=`date +%Y%m%d`
logfile='/etc/mysql_backup/mysql_backup.log'
datapath="/etc/mysql_backup/data"

echo "" >> ${logfile}
echo "-------------------------------------------------" >> ${logfile}
echo "备份时间为${backtime},备份数据库表 ${dbname} 开始" >> ${logfile}
for table in $dbname; do
    cd $datapath
    source=`mysqldump -h ${dbserver} -u ${dbuser} -p${dbpasswd} ${table} > ${backtime}.sql` 2>> ${logfile};
    if [ "$?" == 0 ];then
        tar zcf ${backtime}-${table}.tar.gz ${backtime}.sql > /dev/null # 进行压缩
        rm -f ${backtime}.sql
        find $datapath -name "*.tar.gz" -type f -mtime +30 -exec rm -rf {} \; > /dev/null 2>&1  # 删除 30 天前备份
        echo "数据库表 ${dbname} 备份成功!!" >> ${logfile}
    else
        echo "数据库表 ${dbname} 备份失败!!" >> ${logfile}
    fi
done

然后加入 crontab,凌晨四点执行:

0 4 * * * /etc/profile; bash /etc/mysql_backup/mysql_backup.sh

crontab 的使用方法可以参考 crontab (opens new window)