每天定时自动备份docker的mysql

最近在家里搭建了一个自己的git仓库服务器,刚刚搞好就出了一次问题,导致git使用的数据库数据丢失,谈不上是什么损失,但是也是很浪费时间重新搞一次的,可见 数据备份 是多么的重要。

创建目录

选择一个目录作为 mysql 数据库备份的目录,目录没有特别要求根据自己需求即可
在这里插入图片描述
data 目录作为 mysql 备份跟目录,把脚本放到该目录下
logs 目录作为日志目录
mysql_bak 目录作为 mysql 备份目录

创建备份脚本

在这里插入图片描述

使用以下命令创建脚本

vi backup.sh

在这里插入图片描述

在窗口中输入以下命令

BACKUP_ROOT=/usr/data/
BACKUP_FILEDIR=$BACKUP_ROOT/mysql_bak
#当前日期
DATE=$(date +%Y%m%d)

#查询所有数据库
DATABASES=$(docker exec -i 68a63f41845e mysql  -uroot -p123456 -e "show databases" | grep -Ev "Database|sys|information_schema|performance_schema|mysql")
#循环数据库进行备份
for db in $DATABASES
do
echo
if [[ "${db}" =~ "+" ]] || [[ "${db}" =~ "|" ]];then
echo "jump over ${db}"
else
echo ----------$BACKUP_FILEDIR/${db}_$DATE.sql.gz BEGIN----------
docker exec -i 68a63f41845e  mysqldump -uroot -p123456 --default-character-set=utf8 -q --lock-all-tables --flush-logs -E -R --triggers -B ${db} | gzip > $BACKUP_FILEDIR/${db}_$DATE.sql.gz
echo ${db}
echo ----------$BACKUP_FILEDIR/${db}_$DATE.sql.gz COMPLETE----------
echo
fi
done

echo "备份完成"

通过以下命令测试一下脚本

sh ./backup.sh

在这里插入图片描述

在这里插入图片描述
从命令窗口中可以看到提示 “备份完成” ,到 ftp 工具中可以看到备份文件已生成

创建删除脚本

使用以下命令创建脚本

vi backup_clean.sh

在这里插入图片描述

在窗口中输入以下命令

echo ----------CLEAN BEGIN----------
find /usr/data/mysql_bak/ -mtime +7 -name "*.gz" -exec rm -rf {} \;
echo ----------CLEAN COMPLETE---------

设置定时任务

脚本编写好了,需要加到系统的定时任务里,负责需要手动执行

在这里插入图片描述

查看定时任务
crontab -l

修改定时任务
crontab -e

修改定时任务的时候增加如下,记得修改为自己的脚本路径,下面是凌晨2点自动清理数据,凌晨3点自动备份数据

在这里插入图片描述

#每天02:00自动清理大于7天的mysql备份
00 2 * * * /usr/data/backup_clean.sh > /usr/data/logs/backup_full_clean.log 2>&1

#每天03:00自动备份mysql
00 3 * * * /usr/data/backup.sh > /usr/data/logs/backup.log 2>&1

设置完之后,使用任务查询命令重新查询一次,可以看到刚添加的任务
在这里插入图片描述
到此,mysql每天自动备份和自动删除备份文件已经部署好了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值