日常运维中,经常会碰到自动备份mysql数据库的问题。接下来讲windows下如何快速每日备份数据,把代码复制到记事本,保存后默认文件名字为.txt,修改为.bat,然后把数据库账号,密码,数据库名字,mysql的安装目录修改后即可使用,简单实用,并且还有每日备份日志。
@echo off
setlocal
rem 配置MySQL连接信息
set DB_USER=root
set DB_PASSWORD=root
set DB_NAME=xxl_job
set MYSQL_PATH="C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqldump.exe"
rem 配置备份目录
set BACKUP_DIR=D:\mysql_backups
set LOG_FILE=%BACKUP_DIR%\backup_log.txt
rem 创建备份目录(如果不存在)
if not exist "%BACKUP_DIR%" mkdir "%BACKUP_DIR%"
rem 生成带日期的文件名 (格式: 数据库名_年-月-日.sql)
for /f "tokens=2-4 delims=/ " %%a in ('date /t') do (
set YYYYMMDD=%%c-%%a-%%b
)
set FILENAME=%DB_NAME%_%YYYYMMDD%.sql
set BACKUP_PATH=%BACKUP_DIR%\%FILENAME%
rem 执行备份命令
echo [%date% %time%] 开始备份数据库: %DB_NAME% >> %LOG_FILE%
%MYSQL_PATH% -u%DB_USER% -p%DB_PASSWORD% %DB_NAME% > "%BACKUP_PATH%" 2>> %LOG_FILE%
rem 检查备份结果
if %errorlevel% equ 0 (
echo [%date% %time%] 备份成功! 文件保存至: %BACKUP_PATH% >> %LOG_FILE%
) else (
echo [%date% %time%] 错误! 备份失败,请检查配置 >> %LOG_FILE%
del "%BACKUP_PATH%" 2>nul
)
echo. >> %LOG_FILE%
endlocal