Windows系统中对MySQL数据库的全面备份操作
目标
- 运用mysqldump工具来实施数据库的备份工作
- 自动获取所有的数据库并按照不同文件夹来进行备份存储
- 自动查找7zip并对备份进行压缩保存
- 自动清理90天之前的备份数据
以下是基于bat的完整代码
@echo off
REM 对MySQL相关配置进行设定
set MYSQL_PATH="C:\Program Files\MySQL\MySQL Server 8.1\bin\mysqldump.exe"
set DB_USER=root
set DB_PASS=sa123!SA
set BACKUP_ROOT=D:\backData
REM 生成时间戳(格式:YYYYMMDD_HHmmss)
set TIMESTAMP=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%_%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%
set TIMESTAMP=%TIMESTAMP: =0%
REM 获取数据库列表(排除系统库)
for /f "usebackq skip=1 tokens=*" %%d in (`mysql -u%DB_USER% -p%DB_PASS% -e "SHOW DATABASES;"`) do (
set "db=%%d"
if not "%%d"=="information_schema" (
if not "%%d"=="mysql" (
if not "%%d"=="performance_schema" (
if not "%%d"=="sys" (
REM 动态生成专属备份目录
if not exist %BACKUP_ROOT%\%%d (
mkdir %BACKUP_ROOT%\%%d
)
REM 执行分库备份
%MYSQL_PATH% --user=%DB_USER% --password=%DB_PASS% %%d > %BACKUP_ROOT%\%%d\%%d_%TIMESTAMP%.sql
REM 可选:压缩备份文件
if exist "C:\Program Files\7-Zip\7z.exe" (
"C:\Program Files\7-Zip\7z.exe" a -t7z %BACKUP_ROOT%\%%d\%%d_%TIMESTAMP%.7z %BACKUP_ROOT%\%%d\%%d_%TIMESTAMP%.sql
del %BACKUP_ROOT%\%%d\%%d_%TIMESTAMP%.sql
forfiles /p "%BACKUP_ROOT%\%%d" /m *.7z /d -90 /c "cmd /c del @path"
) else (
forfiles /p "%BACKUP_ROOT%\%%d" /m *.sql /d -90 /c "cmd /c del @path"
)
)
)
)
)
)
REM 记录备份日志
echo [%DATE% %TIME%] 分库备份完成 >> %BACKUP_ROOT%\backup.log
文章整理自互联网,只做测试使用。发布者:Lomu,转转请注明出处:https://www.it1024doc.com/12608.html