欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Windows下实现MySQL自动备份的批处理(复制目录或mysqldump备份)

程序员文章站 2024-02-13 08:03:34
今天有个需求要在 windows 下实现数据库自动备份,拼凑了一下解决办法。 实现的特性 可指定多个数据库 按照 年/月/日 的方式组织备份 可选的使用 winrar 压缩...
今天有个需求要在 windows 下实现数据库自动备份,拼凑了一下解决办法。

实现的特性
可指定多个数据库
按照 年/月/日 的方式组织备份
可选的使用 winrar 压缩备份
使用计划任务实现定时备份

具体代码
备份
复制代码 代码如下:

@echo off & setlocal enableextensions

:: ---------- 配置项 ----------

:: 备份放置的路径,加 \
set backup_path=d:\backup\

:: 要备份的数据库名称,多个用空格分隔
set databases=database1 database2 database3

:: mysql 用户名
set username=root

:: mysql 密码
set password=123456

:: mysql bin 目录,加 \
:: 如果可以直接使用 mysqldump(安装时添加 mysql bin 目录到了环境变量),此处留空即可
set mysql=d:\server\mysql\bin\

:: winrar 自带命令行工具的可执行文件路径,长文件名注意用 dos 长文件名书写方式
set winrar=c:\progra~1\winrar\rar.exe

:: ---------- 以下请勿修改 ----------

set year=%date:~0,4%
set month=%date:~5,2%
set day=%date:~8,2%
:: 如果在 dos 下输入 time 返回的不是 24 小时制(没有 0 填充),请自行修改此处
set hour=%time:~0,2%
set minute=%time:~3,2%
set second=%time:~6,2%

set dir=%backup_path%%year%\%month%\%day%\
set addon=%year%%month%%day%%hour%%minute%%second%

:: create dir
if not exist %dir% (
mkdir %dir% 2>nul
)
if not exist %dir% (
echo backup path: %dir% not exists, create dir failed.
goto exit
)
cd /d %dir%

:: backup
echo start dump databases...
for %%d in (%databases%) do (
echo dumping database %%d ...
%mysql%mysqldump -u%username% -p%password% %%d > %%d.%addon%.sql 2>nul
:: winrar
if exist %winrar% (
%winrar% a -k -r -s -m1 -ep1 %%d.%addon%.rar %%d.%addon%.sql 2>nul
del /f /s /q %%d.%addon%.sql 2>nul
)
)
echo done

:exit

增加计划任务
复制代码 代码如下:

@echo off

:: ------- 配置项 -------

:: 要执行的文件名
set file=d:\cron\cron_backup.bat

:: 计划频率类型
set frequency=daily

:: 频率,与上面的计划频率类型对应
set modifier=1

:: 该计划执行的时间(24 小时制)
set datetime=00:30:00

:: 计划的名字
set name="backup cron job"

:: 计划执行用户,不建议修改
set user="system"

:: ------- 以下请勿修改 -------

schtasks /create /ru %user% /sc %frequency% /mo %modifier% /st %datetime% /tn %name% /tr %file%
pause

其中的

:: 计划频率类型,可选项:
:: minute 分钟
:: daily 天
:: hourly 小时
:: weekly 周
:: monthly 月

:: 频率,与上面的计划频率类型对应
:: minute: 1 到 1439 分钟
:: hourly: 1 - 23 小时
:: daily: 1 到 365 天
:: weekly: 1 到 52 周
:: monthly: 1 到 12,或 first, second, third, fourth, last, lastday

使用方法
将上面的两段代码分别保存为 cron_backup.bat 和 cron_backup_add.bat,并根据注释修改相关参数
确定好目录之后,运行 cron_backup_add.bat 将计划任务添加到系统中。
windows server 2003 / xp 可以通过 开始,控制面板,计划任务进入计划任务管理界面;
windows vista / 7 可以通过 计算机,右键,管理,系统工具,任务计划程序,任务计划程序库,进入计划任务管理界面。
手动运行该任务,查看备份目录来确认下备份是否成功。

待改进
增加删除多少天之前备份的功能