前言
docker-compose mysql5.7.31 数据库需要定时进行备份
环境
centos 7.9
docker-ce 24.0.5
脚本内容
cat mysql_back.sh
#!/bin/bash
#NAME:数据库备份
#DATE:2023/7/29
#USER:laoliyun
#设置本机数据库登录信息
#mysql_user="user"
#mysql_password="passwd"
#mysql_host="localhost"
#mysql_port="3306"
#mysql_charset="utf8mb4"
date_time=`date +%Y-%m-%d-%H-%M`
#保存目录中的文件个数
count=10
#备份路径
path=/root/back
#备份数据库sql文件并指定目录
#mysqldump --all-databases --single-transaction --flush-logs --master-data=2 -h$mysql_host -u$mysql_user -p$mysql_password > $path_$(date +%Y%m%d_%H:%M).sql
docker exec mysql mysqldump --single-transaction --flush-logs -uroot -proot halodb > /root/back/halodb_$(date +%Y%m%d_%H%M%S).sql
[ $? -eq 0 ] && echo "-----------------数据备份成功_$date_time-----------------" || echo "-----------------数据备份失败-----------------"
#找出需要删除的备份
delfile=`ls -l -crt $path/*.sql | awk '{print $9 }' | head -1`
#判断现在的备份数量是否大于阈值
number=`ls -l -crt $path/*.sql | awk '{print $9 }' | wc -l`
if [ $number -gt $count ]
then
rm $delfile #删除最早生成的备份,只保留count数量的备份
#更新删除文件日志
echo "-----------------已删除过去备份sql $delfile-----------------"
fi
定时任务配置
30 08,11,15,18 * * * /bin/sh /root/mysql_back.sh >> /root/mysql_back_log.txt
注意
linux定时任务执行时,脚本里面的docker exec 命令需要去掉 -it
备份日志
cat mysql_back_log.txt
-----------------数据备份成功_-----------------
-----------------数据备份成功_2023-07-30-00-29-----------------
-----------------数据备份成功_2023-07-30-15-30-----------------
-----------------数据备份成功_2023-07-31-03-30-----------------
-----------------数据备份成功_2023-07-31-15-30-----------------
-----------------数据备份成功_2023-07-31-18-30-----------------
-----------------数据备份成功_2023-08-01-08-30-----------------
-----------------数据备份成功_2023-08-01-11-30-----------------
-----------------数据备份成功_2023-08-01-15-30-----------------
-----------------数据备份成功_2023-08-01-18-30-----------------
-----------------已删除过去备份sql /root/back/halodb_20230730_002701.sql-----------------
评论区