49 lines
1.4 KiB
Bash
Executable File
49 lines
1.4 KiB
Bash
Executable File
#!/bin/bash
|
||
|
||
# 获取当前日期和时间
|
||
current_time=$(date +"%Y-%m-%d-%H")
|
||
userName=$1
|
||
password=$2
|
||
dbName=$3
|
||
host=$4
|
||
backUpPath=$5
|
||
ossPath=$6
|
||
|
||
# 备份文件名
|
||
backup_file="${dbName}_backUp_${current_time}.sql"
|
||
|
||
echo "backup_file: "${backup_file}
|
||
mkdir ${backUpPath} -p || true
|
||
# 备份MySQL数据库
|
||
mysqldump --column-statistics=0 -R --opt -u${userName} -p"${password}" -h${host} ${dbName} > ${backUpPath}/"$backup_file"
|
||
cd ${backUpPath}
|
||
rm sql -rf || true
|
||
mkdir sql || true
|
||
mv ${backup_file} sql/
|
||
tar -czvf ${backup_file}".tar.gz" "sql/"
|
||
ossutil cp ${backup_file}".tar.gz" oss://${ossPath}/${backup_file}".tar.gz"
|
||
rm -fr sql
|
||
|
||
# 存储60个小时前的备份文件名的数组
|
||
old_backup_files=()
|
||
|
||
cd ${backUpPath}
|
||
# 遍历60个小时前的备份文件,并将文件名存入数组
|
||
while IFS= read -r -d '' file; do
|
||
old_backup_files+=("$file")
|
||
done < <(find ${backUpPath} -name "${dbName}_backUp_*.tar.gz" -type f -mmin +3600 -print0)
|
||
|
||
# 遍历数组,删除备份文件
|
||
for file in "${old_backup_files[@]}"; do
|
||
rm "$file" || true
|
||
ossutil rm $file oss://${ossPath}/$file -f || true
|
||
done
|
||
|
||
#删除10天前的备份
|
||
#delete_date=$(date -d "10 days ago" +%Y-%m-%d)
|
||
#delete_file="${dbName}_backup_${delete_date}.sql.tar.gz"
|
||
#rm ${backUpPath}/"$delete_file"
|
||
|
||
# 输出日志
|
||
echo "[$current_date $current_time] 执行${dbName}数据库备份并删除10天前备份成功"
|