ali_rds_dbbackup.sh
#!/bin/bash
source /etc/profile
shellpath=$(cd "$(dirname "$0")";pwd)
bakdir='/dbbackup/mysqlbak/databackup'
week_day=$(date +%w)
month_day=$(date +%d)
dbinfo=(`mysql --login-path=p_arch -N -e "select concat(instance_id,',',instance_desc,',',ak,',',cutname,',',backup_type) from dba.instance_info where backup_type <>2 and env_type='proc';"`)
for(( i=0;i<${#dbinfo[@]};i++ ))
do
array=(`echo ${dbinfo[$i]} | tr ',' ' '`)
rdsid=`echo ${array[0]}`
rdsdesc=`echo ${array[1]}`
ak=`echo ${array[2]}`
dirname=`echo ${array[3]}`
baktype=`echo ${array[4]}`
#echo ${dbinfo[$i]}
#判断如果备份类型为0或者备份类型为1并且是周二,或者备份类型为3且为15号则进行备份
if [ ${baktype} -eq 0 ] || ([ ${baktype} -eq 1 ] && [ $week_day -eq 2 ]) || ([ ${baktype} -eq 3 ] && [ $month_day -eq 15 ]); then
aliyun_DownloadURL=`aliyun --profile ${ak} rds DescribeBackups --DBInstanceId $rdsid --BackupStatus Success |jq .Items.Backup[0].BackupIntranetDownloadURL`
aliyun_DownloadURL=`echo ${aliyun_DownloadURL}|sed s#\"##g`
filename=`echo $aliyun_DownloadURL|cut -d '?' -f 1 |cut -d '/' -f 5`
filedir=${bakdir}/${dirname}
if [ ! -d ${filedir} ]; then
mkdir -p ${filedir}
fi
#下载备份文件
echo `date +%Y-%m-%d_%H:%M:%S`:Begin Download the ${rdsdesc} backup file...
/usr/bin/wget -c ${aliyun_DownloadURL} -O ${filedir}/${filename}
echo `date +%Y-%m-%d_%H:%M:%S`:Finish Download ${rdsdesc} to ${filedir}/${filename} !
else
echo `date +%Y-%m-%d_%H:%M:%S`: ${rdsdesc} 为每周或每月归档实例,跳过此次归档...
fi
#清理一年前的备份,并保留每周一个备份,-mtime +365 365天以前
find ${bakdir}/ -mtime +365 -type f -name '*hins*' -exec rm -f {} \;
done