当前位置: 首页 > news >正文

mysql数据库自动备份_脚本_配置自动运行_windows下

1. mysql数据库自动备份

环境: win11 mysql 8.0

mysql安装位置:C:\Program Files\MySQL\MySQL Server 8.0\bin

功能:

        备份生成sql文件和备份过程log,并自动验证是否备份成功,最后压缩成zip文件,并自动删除指定日期(7天前)的备份。

  • 完全中文路径支持,Windows 10/11 适用

  • 自动生成 SQL + ZIP,不会因为验证失败就退出

  • 验证逻辑:创建 _test 数据库验证备份可用性,验证失败也不阻塞压缩

  • 日志完整%LOG_FILE% 记录整个备份流程

  • 保留最近 N 天备份,自动删除过期 ZIP 文件

脚本:

已验证可用。

@echo off
:: ==========================
:: MySQL 自动备份脚本(中文 Windows 可用)
:: Windows 10/11 + MySQL 8.0
:: ==========================
chcp 65001 >nul:: === 配置 ===
set MYSQL_BIN_PATH=C:\Program Files\MySQL\MySQL Server 8.0\bin
set BACKUP_PATH=E:\Data\
set MYSQL_USER=root
set MYSQL_PASS=root
set DATABASES=user_db location_db goods_db
set ENABLE_VERIFY=true
set RETAIN_DAYS=7
set TEST_DB_SUFFIX=_test:: === 时间戳 ===
for /f "tokens=1-2 delims= " %%a in ('wmic os get LocalDateTime ^| find "."') do set ldt=%%a
set DATETIME=%ldt:~0,8%_%ldt:~8,6%set BACKUP_FILE=%BACKUP_PATH%\my_backup_%DATETIME%.sql
set ZIP_FILE=%BACKUP_PATH%\my_backup_%DATETIME%.zip
set LOG_FILE=%BACKUP_PATH%\my_backup_%DATETIME%.log
set TEST_SQL=%BACKUP_PATH%\my_backup_verify_%DATETIME%.sql:: === 创建备份目录 ===
if not exist "%BACKUP_PATH%" mkdir "%BACKUP_PATH%":: === 开始备份 ===
echo. > "%LOG_FILE%"
echo ============================================ >> "%LOG_FILE%"
echo 🚀 MySQL 数据库备份开始: %DATE% %TIME% >> "%LOG_FILE%"
echo ============================================ >> "%LOG_FILE%"
echo 备份路径: %BACKUP_PATH% >> "%LOG_FILE%"
echo 输出文件: %BACKUP_FILE% >> "%LOG_FILE%""%MYSQL_BIN_PATH%\mysqldump.exe" -u %MYSQL_USER% -p%MYSQL_PASS% --databases %DATABASES% --routines --events --triggers --single-transaction --default-character-set=utf8mb4 > "%BACKUP_FILE%" 2>> "%LOG_FILE%"if not exist "%BACKUP_FILE%" (echo ❌ SQL 文件生成失败! >> "%LOG_FILE%"
) else (echo ✅ SQL 文件生成完成 >> "%LOG_FILE%"
):: === 验证备份文件(可选) ===
if /i "%ENABLE_VERIFY%"=="true" (echo. >> "%LOG_FILE%"echo 🧪 开始验证备份文件 >> "%LOG_FILE%"copy "%BACKUP_FILE%" "%TEST_SQL%" /Y >nul:: 批处理方式替换数据库名for %%D in (%DATABASES%) do (setlocal enabledelayedexpansionset ORIGINAL=%%Dset TEST=%%D%TEST_DB_SUFFIX%powershell -NoProfile -Command ^"(Get-Content -LiteralPath '%TEST_SQL%') | ForEach-Object {$_ -replace '!ORIGINAL!','!TEST!'} | Set-Content -LiteralPath '%TEST_SQL%' -Encoding UTF8"endlocal)if not exist "%TEST_SQL%" (echo ⚠️ 测试 SQL 文件生成失败 >> "%LOG_FILE%") else (:: 导入测试数据库:: "%MYSQL_BIN_PATH%\mysql.exe" -u %MYSQL_USER% -p%MYSQL_PASS% < "%TEST_SQL%" 2>> "%LOG_FILE%""%MYSQL_BIN_PATH%\mysql.exe" -u %MYSQL_USER% -p%MYSQL_PASS% --default-character-set=utf8mb4 < "%TEST_SQL%" 2>> "%LOG_FILE%"if %errorlevel% neq 0 (echo ⚠️ 测试数据库导入失败,但继续执行 >> "%LOG_FILE%") else (echo ✅ 测试数据库创建成功 >> "%LOG_FILE%"):: 删除测试数据库for %%D in (%DATABASES%) do ("%MYSQL_BIN_PATH%\mysql.exe" -u %MYSQL_USER% -p%MYSQL_PASS% -e "DROP DATABASE IF EXISTS %%D%TEST_DB_SUFFIX%;" >> "%LOG_FILE%" 2>&1)del "%TEST_SQL%" >nul 2>&1)
):: === 压缩备份文件 ===
powershell -NoProfile -Command "Compress-Archive -Path '%BACKUP_FILE%' -DestinationPath '%ZIP_FILE%' -Force"
if exist "%ZIP_FILE%" (echo ✅ 已压缩为: %ZIP_FILE% >> "%LOG_FILE%"del "%BACKUP_FILE%"echo 🧹 已删除原始 SQL 文件 >> "%LOG_FILE%"
) else (echo ⚠️ 压缩失败,保留原 SQL 文件 >> "%LOG_FILE%"
):: === 清理旧备份 ===
forfiles /p "%BACKUP_PATH%" /m "*.zip" /d -%RETAIN_DAYS% /c "cmd /c del @path" >> "%LOG_FILE%" 2>&1:: === 完成 ===
echo ============================================ >> "%LOG_FILE%"
echo ✅ MySQL 自动备份完成: %DATE% %TIME% >> "%LOG_FILE%"
echo ============================================ >> "%LOG_FILE%"
echo 备份日志文件: %LOG_FILE%
pause

2. Windows 任务计划程序_自动执行脚本

Windows 任务计划程序 中每天自动执行这个备份脚本。下面详细步骤:


1️⃣ 打开任务计划程序

  1. Win + S 搜索“任务计划程序”,打开它。

  2. 在右侧点击 创建基本任务


2️⃣ 设置任务名称和描述

  • 名称:我的每日备份

  • 描述:可选,例如“自动备份xxx数据到指定xxx目录”

点击 下一步


3️⃣ 触发器(Trigger)

  • 选择 每天,点击 下一步

  • 设置开始日期和时间,例如 每天 01:00 执行。

  • 点击 下一步


4️⃣ 操作(Action)

  • 选择 启动程序,点击 下一步

  • 程序/脚本:填入你的批处理脚本路径,例如:

    E:\Data\backup_mysql.bat
    
  • 起始于(可选):填入批处理所在文件夹路径:

    E:\Data\
    
  • 点击 下一步


5️⃣ 完成任务

  • 确认设置,然后点击 完成


6️⃣ 额外设置(可选,推荐)

  1. 双击任务 → 属性常规

    • 勾选 使用最高权限运行(防止权限不足导致备份失败)。

  2. 条件设置 标签页:

    • 可以设置“即使未登录也运行”。

    • 设置失败重试策略。


这样每天指定时间,Windows 就会自动运行你的批处理脚本,生成 SQL 和 ZIP 备份,并写日志。

3. 运行效果

log文件:

(其中的ERROR 1064 与字符编码有关,可以暂时忽略)

http://www.dtcms.com/a/556813.html

相关文章:

  • Linux : 进程概念
  • 510-Spring AI Alibaba Graph Stream Node 示例
  • 【11408学习记录】考研英语长难句通关:2018真题精析,每日一句攻克阅读难点!​
  • 做网站买那种服务器龙港哪里有做阿里巴巴网站
  • TXT文件去重工具,一键快速去重复
  • ModelEngine vs Dify vs Coze:AI开发平台横评
  • 开封建站公司图片生成链接的网站
  • C++ STL:list|了解list|相关接口|相关操作
  • 【Java后端】配置属性BeanCreateException异常,使用默认值语法添加空串
  • 指针深入第二弹--字符指针、数组指针、函数指针、函数指针数组、转移表的理解加运用
  • 用红黑数封装实现map,set
  • PsTools 学习笔记(7.8):远程连接选项——连接性、超时、会话与安全基线
  • Java Se—异常
  • JSON.stringify() 方法详解
  • DevOps工具链对比,Azure 和 TikLab哪款更好用?
  • 安徽省住房城乡建设厅门户网站深圳百度快速排名优化
  • 一种无需IP核的FPGA RAM初始化方法:基于源码定义与赋值实现
  • openpnp - 坐标系统只有一个
  • 前端新技术解读:WebAssembly、Web Components 与 Tailwind CSS
  • 做a爱片网站做山西杂粮的网站
  • mysql保存二进制数据
  • 目标跟踪 deepsort
  • 网站建设前的分析第一小节内容好看网页设计
  • SAP PP生产版本批量维护功能分享
  • 【Linux】当遇到不是root用户,无法进入root用户,却仍需要使用sudo命令时
  • Python 生成书法字体(以瘦金体为例)
  • Advanced Science 国防科大开发1.8克人仿生眼球,实现微型化与功能集成度兼具!
  • 数据结构05:顺序表经典算法
  • 静态网站开发课程深圳东门网红打卡地
  • Ubuntu 24.04下编译支持ROCm加速的llama.cpp