找回密码
 立即注册
首页 业界区 安全 Windows下备份所有mysql数据库

Windows下备份所有mysql数据库

卜笑 2025-6-12 13:43:17
Windows下备份所有mysql数据库

目标


  • 基于mysqldump进行数据库的备份
  • 自动获取所有的数据库并分文件夹进行备份保存
  • 自动检测7zip并进行压缩存放
  • 自动清理90天之前的数据备份
以下是基于bat的完整代码
  1. @echo off
  2. REM REM MySQL配置
  3. set MYSQL_PATH="C:\Program Files\MySQL\MySQL Server 8.1\bin\mysqldump.exe"
  4. set DB_USER=root
  5. set DB_PASS=sa123!SA
  6. set BACKUP_ROOT=D:\backData
  7. REM REM 生成时间戳(格式:YYYYMMDD_HHmmss)
  8. set TIMESTAMP=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%_%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%
  9. set TIMESTAMP=%TIMESTAMP: =0%
  10. REM REM 获取数据库列表(排除系统库)
  11. for /f "usebackq skip=1 tokens=*" %%d in (`mysql -u%DB_USER% -p%DB_PASS% -e "SHOW DATABASES;"`) do (
  12.     set "db=%%d"
  13.     if not "%%d"=="information_schema" (
  14.         if not "%%d"=="mysql" (
  15.             if not "%%d"=="performance_schema" (
  16.                 if not "%%d"=="sys" (
  17.                     REM == 动态生成专属备份目录 ==
  18.                     REM 此处别用set会导致变量不更新的问题
  19.                     REM set "BACKUP_DIR=%BACKUP_ROOT%\%%d"
  20.                     if not exist %BACKUP_ROOT%\%%d (
  21.                         mkdir %BACKUP_ROOT%\%%d
  22.                     )
  23.                     
  24.                     REM REM 执行分库备份
  25.                     %MYSQL_PATH% --user=%DB_USER% --password=%DB_PASS% %%d > %BACKUP_ROOT%\%%d\%%d_%TIMESTAMP%.sql
  26.                     
  27.                     REM REM 可选:压缩备份文件
  28.                     if exist "C:\Program Files\7-Zip\7z.exe" (
  29.                         "C:\Program Files\7-Zip\7z.exe" a -t7z %BACKUP_ROOT%\%%d\%%d_%TIMESTAMP%.7z %BACKUP_ROOT%\%%d\%%d_%TIMESTAMP%.sql
  30.                         del %BACKUP_ROOT%\%%d\%%d_%TIMESTAMP%.sql
  31.                         forfiles /p "%BACKUP_ROOT%\%%d" /m *.7z /d -90 /c "cmd /c del @path"
  32.                     ) else (
  33.                         forfiles /p "%BACKUP_ROOT%\%%d" /m *.sql /d -90 /c "cmd /c del @path"
  34.                     )
  35.                 )
  36.             )
  37.         )
  38.     )
  39. )
  40. REM REM 记录备份日志
  41. echo [%DATE% %TIME%] 分库备份完成 >> %BACKUP_ROOT%\backup.log
复制代码


来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册