1,编辑备份脚本shell文件 mysql_backup.sh
#备份数据库
#数据库备份保存地址
data_out_dir=/data/sqlbak
#mysql连接地址
host=rm-2liblsnrnsdjdkjf.mysql.rds.aliyuncs.com
#mysql端口号
port=3306
#mysql账号
username=root
#mysql密码
password=123456
#默认数据保留天数
defaultDataSaveDay=15
#删除旧数据
#参数1:备份文件夹路径 参数2:数据保存天数
deleteOldData(){
# 备份文件夹路径;
back_path_home=${1};
# 数据保存天数
dataSaveDay=${2};
#按时间倒序列出文件
apiInfo=(`ls -rt ${back_path_home}`)
for apiName in ${apiInfo[*]} ;
do
FILE_DRI=${back_path_home}/$apiName
#查找目录中更改时间在dataSaveDay日以前且名称后缀维.sql.gz的文件
for file_pwd in $(find $FILE_DRI -type f -mtime +${dataSaveDay} -name *.sql.gz);
do
#echo $file_pwd
file_size=$(du -sh $file_pwd | awk '{print $1}')
rm -rf ${file_pwd}
echo "删除${dataSaveDay}天前文件---->${file_pwd}";
if [ ! -f "${file_pwd}" ]; then
rm_date=`date +"%F %T"`
echo "${rm_date} | ${file_pwd} | ${file_size} 已删除"
else
rm_date=`date +"%F %T"`
echo "${rm_date} | ${file_pwd} | ${file_size} 删除失败 "
fi
done
done
}
#备份数据库方法
#参数1:数据库名称 参数2:数据保存天数
backupDatabase(){
#数据库名称
databaseName=${1};
# 数据保存天数
dataSaveDay=${2:-${defaultDataSaveDay}};
#sql文件输出的文件夹路径
sql_path=${data_out_dir}/${databaseName};
#当前时间
now_time=`date +'%Y-%m-%d.%H.%M.%S'`;
#输出sql文件的全路径
sql_file=${sql_path}/${databaseName}_${now_time}.sql.gz;
#文件夹不存在则创建文件夹
mkdir -p ${sql_path};
echo "开始备份数据库${databaseName}";
mysqldump --opt --host=${host} -u${username} -p${password} ${databaseName} | gzip > ${sql_file};
echo "备份完毕";
#删除旧数据
deleteOldData ${sql_path} ${dataSaveDay}
}
#备份taotao数据库,保存30天内的备份文件
backupDatabase taotao 30;
#备份oa数据库,默认保存15天内的备份文件
backupDatabase oa;
2,给可执行文件授权
chmod +x mysql_backup.sh
3,加入定时任务
打开定时任务编辑: crontab -e
添加一行命令(每天凌晨三点执行命令): 0 3 * * * /home/shell/mysql_backup.sh
保存
完毕;