#!/bin/sh
#db_backups_conf.txt文件路徑
db_backups_conf="/wocloud/shell/db_backups_conf.txt"
#判斷文件是否存在
if [ -f "${db_backups_conf}" ];then
echo $(date +'%Y-%m-%d %H:%M:%S')" 數據庫配置信息文件存在,開始進行數據備份"
#獲取等號前內容,作為map中的Key值
dbArrOne=($(awk -F'[=]' '{print $1}' ${db_backups_conf} ))
#獲取等號后內容,作為map中的value值
dbArrTwo=($(awk -F'[=]' '{print $2}' ${db_backups_conf}))
#創建一個空map
declare -A map=()
#通過循環,將db_backups_conf配置文件中的信息存儲在map中
for((i=0;i
do
map[${dbArrOne[i]}]=${dbArrTwo[i]}
done
#獲取備份數據庫的字符串
copyDb=${map["copydb"]}
#獲取默認的字符串分隔符
old_ifs="$IFS"
#設置字符串分隔符為逗號
IFS=","
#將備份數據庫value值的字符串進行分隔,獲取一個數組
dbArr=($copyDb)
#將字符串的分隔符重新設置為默認的分隔符
IFS="$old_ifs"
#獲取當前年月日
saveday=$(date +%Y%m%d)
#獲取超出備份天數的年月日
delday=$(date -d ${map["backupsFileDay"]}' days ago' +%Y%m%d)
#遍歷要備份的數據庫,刪除兩天前備份的數據文件
for delDb in ${dbArr[@]};
do
echo $(date +'%Y-%m-%d %H:%M:%S')" 刪除文件:"${map["backupsFileStr"]}/${delDb}_database_${delday}.sql
rm -f ${map["backupsFileStr"]}/${delDb}_database_${delday}.sql
done
#遍歷要備份的數據庫,備份數據文件
for saveDb in ${dbArr[@]};
do
echo $(date +'%Y-%m-%d %H:%M:%S')" 備份數據庫:"${saveDb}
${map["mysqldumpStr"]} -u${map["username"]} -p${map["password"]} --default-parallelism=${map["threadCounts"]} -B ${saveDb} > ${map["backupsFileStr"]}/${saveDb}_database_${saveday}.sql
done
echo $(date +'%Y-%m-%d %H:%M:%S')" 數據備份完畢,腳本執行完畢"
else
echo "文件不存在"
fi