docker mysql 数据备份脚本shell(基于crontab)
Jul 3, 2021
Jun 23, 2023
Jun 23, 2023
定时备份数据库
新建一个backup.sh用于备份成sql文件
#! /bin/bash
BACKUP_DIR="<备份sql保存位置>"
LOG_FILE="<LOG文件位置>"
DATE=`date +%Y-%m-%d_%H-%M`
USER="数据库用户名"
PASSWORD="数据库密码"
DATABASE="数据库名"
SQL_FILE="mysql_$DATE.sql"
DOCKER_TAG="数据库docker name"
if [! -d $BACKUP_DIR];
then
mkdir -p "$BACKUP_DIR"
fi
echo -e "\n" >> $LOG_FILE
cd $BACKUP_DIR
docker exec -i $DOCKER_TAG mysqldump -u$USER -p$PASSWORD $DATABASE > $SQL_FILE
if [[ $? == 0 ]]; then
tar czvf $SQL_FILE.gz $SQL_FILE >> $LOG_FILE 2>&1
echo "$DATE----- $SQL_FILE.gz backup success!" >> $LOG_FILE
rm -f $SQL_FILE
else
echo "$DATE----- $SQL_FILE.gz backup fail!" >> $LOG_FILE
fi
定时删除超过规定时间的备份文件 新建一个clear_backup.sh
#! /bin/bash
BACKUP_DIR="<备份sql的文件目录位置>"
LOG_FILE="<LOG文件位置>"
DATE=`date +%Y-%m-%d_%H-%M`
KEEP_TIME=<删除超过多少天的文件>
# DEL_FILE=`find $BACKUP_DIR -type f -mmin +$KEEP_TIME -exec ls {} \;`
DEL_FILE=`find $BACKUP_DIR -type f -mtime +$KEEP_TIME -exec ls {} \;`
for delfile in ${DEL_FILE}
do
rm -f $delfile
done
echo "$DATE----- clear cache backup mysql file" >> $LOG_FILE
写完这两个文件就可以使用crontab创建定时任务
执行
crontab -e
进行添加任务计划(例如每天2点0分开始执行任务)
0 2 * * * /*.sh
导入sql文件到docker mysql容器
docker cp <sql文件位置> <容器name>:/
docker exec my-mysql sh -c 'exec mysql -u<用户名> -p<密码> -D<数据库> < <sql文件>'
这是整理的关于备份/导入sql整理备份 没有将导入sql.sh是因为用的及其不频繁 |