需求:对测试数据库的指定库每天早上备份一次,中午备份一次。防止队友对数据库的误删除操作。
实现方式:通过MySQL自带的musqldump实现数据库的备份功能,同时通过编写脚本实现将备份的sql保存到制定的目录。最后通过windoms自带的定时任务,实现每天的定时备份。
实现过程:首先是编写的脚本
@echo off
@setlocal enabledelayedexpansionl
set dbType=inpo
set dbname="glzc_%dbType%_uflo glzc_%dbType%_pt glzc_%dbType%_wp glzc_%dbType%_ma
set host=你的数据库地址
set port=3306
set user=root
set password=root
set dir=存放sql的大路径
set hour=%time: ~0,2%.
jif %time: ~0, 1%"==""set hour=0%time: ~1, 1%
set backup_date=%Date:~ 0, 4%%Date:~ 5, 2%%Date: ~8, 2%%hour%%Time: ~3, 2%%Time:~ 6, 2%
set year %Date:~0, 4%
set mouth=%Date:~5, 2%
set day=%Date:~8, 2%
lif not exist %dir%\%year%\%mouth%\%day%\%dbType% md %dir%\%year%\%mouth%\%day%\%dbType%
for %%i in (%dbname%) do (
set backupfile=%dir%\%year%\%mouth%\%day%\%dbType%\%%i-%backup_date%.sql
"Mysql安装地址\bin\mysqldump" -h%host% -p%port% -u%user% --default-character-set-utf8 -p%password% -c --add-drop-table %%i> !backupfile!
解读下:
@echo off 关闭输出提示
@setlocal enabledelayedexpansionl 延迟加载 和后面for里面的!!合起来用,让电脑知道这是个变量
set dbType=inpo
set dbname="glzc_%dbType%uflo glzc%dbType%pt glzc%dbType%wp glzc%dbType%_ma
这两句就是指定的数据库名, 我们项目一个系统多个数据库,所以采用这种方式
lif not exist %dir%%year%%mouth%%day%%dbType% md 对应的路径没有便自己创建,路径名是 年/月/日/type
for %%i in (%dbname%) do (
set backupfile=%dir%%year%%mouth%%day%%dbType%%%i-%backup_date%.sql
"Mysql安装地址\bin\mysqldump" -h%host% -p%port% -u%user% --default-character-set-utf8 -p%password% -c --add-drop-table %%i> !backupfile! 在循环里执行备份语句
最后把他改成bat批处理文件
定时任务的创建
1、
2、
3、
4、
5、
6、
O了 同理中午的任务再次创建一个,启动时间定在中午12点半。