【MySQL】定时备份脚本

#!/bin/bash
# 保存备份个数,备份31天数据
number=31
# 备份根目录
backup_root_dir=/home/mysql/backup/data
# 日期
dd=`date +%Y-%m-%d-%H-%M-%S`
# 备份工具
tool=mysqldump
# 用户名
username=root
# 密码
password='1111111111'
# 要备份的数据库列表(多个数据库名用空格分隔)
database_names=("database1" "database2" "database3")

# 如果备份根目录不存在则创建
if [ ! -d $backup_root_dir ]; then
mkdir -p $backup_root_dir
fi

# 遍历数据库列表并进行备份
for database_name in "${database_names[@]}"
do
# 为每个数据库创建独立的备份目录
database_backup_dir=$backup_root_dir/$database_name
if [ ! -d $database_backup_dir ]; then
mkdir -p $database_backup_dir
fi

# 执行备份
$tool -u $username -p$password $database_name > $database_backup_dir/$database_name-$dd.sql
# 写创建备份日志
echo "create $database_backup_dir/$database_name-$dd.sql" >> $backup_root_dir/log.txt
done

# 遍历每个数据库并删除过期备份
for database_name in "${database_names[@]}"
do
# 获取当前数据库的备份目录
database_backup_dir=$backup_root_dir/$database_name

# 找出需要删除的备份文件
delfile=`ls -l -crt $database_backup_dir/*.sql | awk '{print $9 }' | head -1`

# 判断当前数据库的备份数量是否大于$number
count=`ls -l -crt $database_backup_dir/*.sql | awk '{print $9 }' | wc -l`

if [ $count -gt $number ]; then
# 删除最早生成的备份文件,只保留$number数量的备份
rm $delfile
# 写删除文件日志
echo "delete $delfile" >> $backup_root_dir/log.txt
fi
done

 
posted @ 2022-11-10 09:49    阅读(65)  评论(0编辑  收藏  举报