建备份可执行命令文件
cd /usr/local/docker/mysql/backupvim backup.sh
**backup.sh** 内容:
#! /bin/bash#############定义变量############################备份sql保存位置BACKUP_DIR="/usr/local/docker/mysql/backup"#LOG文件位置LOG_FILE="/usr/local/docker/mysql/backup/backup.log"DATE=`date +%Y-%m-%d_%H-%M`USER="root"PASSWORD="koyo49mysql@2022"#数据库名,--all-databases 代表全部数据库DATABASE="--all-databases"#数据库备份文件名SQL_FILE="backup_all_$DATE.sql"#保存天数KEEP_DAYS=15# mysql容器名DOCKER_TAG="mysql"#############删除过期文件############################ 删除过期文件DEL_FILE=`find $BACKUP_DIR -type f -name "*.sql.gz" -mtime +$KEEP_DAYS -exec ls {} \;`for delfile in ${DEL_FILE}dorm -f $delfileecho "$DATE----- $delfile delete success!" >> $LOG_FILEdoneecho "$DATE----- clear cache backup mysql file" >> $LOG_FILE#############备份数据库###########################if [ ! -d $BACKUP_DIR ];thenmkdir -p "$BACKUP_DIR"ficd $BACKUP_DIR# 执行备份命令docker exec -i $DOCKER_TAG mysqldump -u$USER -p$PASSWORD $DATABASE > $SQL_FILEif [[ $? == 0 ]]; then# 压缩SQL文件tar czvf $SQL_FILE.gz $SQL_FILEecho "$DATE----- $SQL_FILE.gz backup success!" >> $LOG_FILErm -f $SQL_FILEelseecho "$DATE----- $SQL_FILE.gz backup fail!" >> $LOG_FILEfi
创建定时任务
# 创建定时任务crontab -e# 设置定时任务,每天凌晨1点执行相关脚本0 1 * * * sh /usr/local/docker/mysql/backup/backup.sh# 查看定时任务crontab -l
恢复数据
docker cp <sql文件位置> <容器name>:/docker exec <容器name> sh -c 'exec mysql -u<用户名> -p<密码> -D<数据库> < <sql文件>'
