1. 创建脚本 mysql_backup.sh
#!/bin/bash
# 保留90天数据,
# mysql-5.7 为安装mysql的docker
docker exec -i mysql-5.7 bash<<'EOF'
# 判断目录是不是已经存在,如果不存在则创建
if [ ! -d "/backups/mysql" ]; then
mkdir -p /backups/mysql
fi
# backups 为数据库的名称
mysqldump -uroot -pwoshimima platform_v3.0 > /backups/mysql/$(date +%Y%m%d%H)_platform_v3.sql
#删除超过1天的数据
rm -f /backups/mysql/$(date -d -1day +%Y%m%d%H)_platform_v3.sql
exit
EOF
# 判断目录是不是已经存在,如果不存在则创建
if [ ! -d "/backups/mysql" ]; then
mkdir -p /backups/mysql
fi
# 将docker中的备份的数据拷贝到宿主机上。
docker cp mysql-5.7:/backups/mysql/$(date +%Y%m%d%H)_platform_v3.sql /backups/mysql
# 压缩文件
gzip /backups/mysql/$(date +%Y%m%d%H)_platform_v3.sql
#删除超过90天的数据
rm -f /backups/mysql/$(date -d -90day +%Y%m%d%H)_platform_v3.sql.gz
2. 定时执行脚本
将脚本上传到 /backups/script/ 下,并赋予权限
$ chmod 777 /backups/script/mysql_backup.sh
# 显示定时任务
$ crontab -l
# 编辑定时任务
$ crontab –e
$ vim /var/spool/cron/root
# 追加
$ 0 9,14,20 * * * /backups/script/mysql_backup.sh > /backups/script/mysql_backup.log 2>&1 &
其中/backups/script/mysql_backup.log
是本次定时任务的日志。