docker 通过定时任务恢复MySQL数据库
1.编写恢复命令脚本 nm_jxxt_new.sh ,并记录开始及结束 时间
格式
gunzip -c 备份文件路径 | docker exec -i 容器id(xxx) mysql -u数据库连接用户名(xx) -p密码(xx) 恢复到数据名称(xx)
参考命令如果是压缩文件
gunzip -c /u01/db/mysql_8.0.26/backup/my_db_nameb_20250428_000011.sql.gz | docker exec -i 5cb4w344d mysql -uroot -proot my_db_namee
如果是sql文件
docker exec -i 5cb4da3d589c mysql -uroot -proot my_db_name < /u01/db/mysql_8.0.26/backup/my_db_name_20250428_000011.sql
参考脚本
#! /bin/sh# 定义日志文件路径
LOG_FILE="/u01/db/MY_DBNAME_backup.log"# 获取当前时间
START_TIME=$(date "+%Y-%m-%d %H:%M:%S")
echo "-----------------数据库恢复日志-----------------" >> $LOG_FILE
echo "恢复开始时间: $START_TIME" >> $LOG_FILE
echo "数据库名称: MY_DBNAM" >> $LOG_FILE
echo "-------------------------------------------------" >> $LOG_FILEecho "-----------------恢复mysql8数据库---------------";
echo "--数据库恢复开始 -------------------------------";# 执行数据库恢复
START_RESTORE_TIME=$(date +%s)
gunzip -c /usr/db/mysql_8/backup/MY_DBNAM_20250428_000011.sql.gz | docker exec -i 5cb4da34534 mysql -uroot -pjysa MY_DBNAM# 记录数据库恢复结束时间和用时
END_RESTORE_TIME=$(date +%s)
RESTORE_TIME=$((END_RESTORE_TIME - START_RESTORE_TIME))END_TIME=$(date "+%Y-%m-%d %H:%M:%S")echo "恢复结束时间: $END_TIME" >> $LOG_FILE
echo "恢复用时: $RESTORE_TIME 秒" >> $LOG_FILE
echo "-------------------------------------------------" >> $LOG_FILE
echo "--数据库恢复结束 -------------------------------" >> $LOG_FILE# 输出日志到终端
cat $LOG_FILE
2. 添加定时任务
- 打开 crontab 编辑器
crontab -e
- 添加以下行:
10 0 29 4 * /u01/db/MY_DBNAM.sh
3. 加载定时任务
systemctl reload crond.service
4.查看任务列表
crontab -l