使用set命令定义几个环境变量

REM 设置数据库连接信息
set MYSQL_USER=MySQL 用户名
set MYSQL_PASSWORD=MySQL 密码
set DATABASE_NAME=要备份的数据库名称
set BACKUP_DIR=备份文件存放目录
set MYSQL_DUMP_PATH="E:\soft\MySQL\MySQL Server 8.0\bin\mysqldump"
set MYSQL_PORT=MySQL端口号

获取当前日期,格式为YYYYMMDD

REM 获取当前日期,格式为YYYYMMDD
for /f "tokens=2 delims==" %%I in ('wmic os get localdatetime /value') do set datetime=%%I
set TIMESTAMP=%datetime:~0,4%%datetime:~4,2%%datetime:~6,2%

创建备份目录(如果不存在)

if not exist "%BACKUP_DIR%" mkdir "%BACKUP_DIR%"

执行MySQL数据库备份

%MYSQL_DUMP_PATH% -u%MYSQL_USER% -p%MYSQL_PASSWORD% --port=%MYSQL_PORT% %DATABASE_NAME% > "%BACKUP_DIR%\%DATABASE_NAME%_%TIMESTAMP%.sql"
if errorlevel 1 (
    echo 备份失败!
    goto end
)

定时清理备份文件(不需要可不配置)

forfiles /p "%BACKUP_DIR%" /s /m *.sql /d -90 /c "cmd /c del @file"
if errorlevel 1 (
    echo 清理备份文件失败!
    goto end
)

完整脚本如下:

@echo off
setlocal

REM 设置数据库连接信息
set MYSQL_USER=
set MYSQL_PASSWORD=
set DATABASE_NAME=
set BACKUP_DIR=
set MYSQL_DUMP_PATH="MySQL\MySQL Server 8.0\bin\mysqldump"
set MYSQL_PORT=

REM 获取当前日期,格式为YYYYMMDD
for /f "tokens=2 delims==" %%I in ('wmic os get localdatetime /value') do set datetime=%%I
set TIMESTAMP=%datetime:~0,4%%datetime:~4,2%%datetime:~6,2%

REM 创建备份目录(如果不存在)
if not exist "%BACKUP_DIR%" mkdir "%BACKUP_DIR%"

REM 执行MySQL数据库备份
%MYSQL_DUMP_PATH% -u%MYSQL_USER% -p%MYSQL_PASSWORD% --port=%MYSQL_PORT% %DATABASE_NAME% > "%BACKUP_DIR%\%DATABASE_NAME%_%TIMESTAMP%.sql"
if errorlevel 1 (
    echo 备份失败!
    goto end
)

REM 清理超过90天的备份文件
forfiles /p "%BACKUP_DIR%" /s /m *.sql /d -90 /c "cmd /c del @file"
if errorlevel 1 (
    echo 清理备份文件失败!
    goto end
)

:end
endlocal
Logo

一站式 AI 云服务平台

更多推荐