批处理实现mysql数据库备份

为了实现数据库每日自动化备份,我们可以结合windows系统的任务计划,定时运行我们的bat文件,实现每日自动备份。

任务计划也可以用批处理实现,但是本文主要不是讲这个,而且任务计划只要我们手动点一点就行了

实现:

1.首先我们需要新建一个配置文件,我的config.ini,具体内容如下

[FILE_PATH]
mysql_bin=mysql安装路径\bin\
backup_safe_path=备份文件保存的目录
[mysql]
host=127.0.0.1
port=3306
user=root
pwd=""

需要去设置你自己的mysql的bin目录(mysqldump跟mysql命令在里面),以及设置mysql的一些连接信息


2.我们新建一个backup.bat

然后我们需要写一个方法去读取配置文件内容,关于批处理读取配置文件,我就没自己去遭轮子了,我参考了这篇文章
用这个方法前,需要在 @echo off 下面写这句话
SETLOCAL ENABLEDELAYEDEXPANSION
读取配置文件的核心方法

:get_config
for /f "usebackq delims=" %%a in (%1) do (
    set content=%%a
    if not "!content:~0,1!" == "[" (
        for /f "delims=; tokens=1" %%b in ("!content!") do (
            set content=%%b
            for /f "delims== tokens=1-2" %%i in ("!content!") do (
                set key=%%i
                    set key=!key: =!
                set value=%%j
                    set value=!value: =!
                set !key!=!value!
            )
        )
    )
)
goto:eof

用法 get_config 配置文件路径
然后就可以直接把配置里面的键(key)作为变量使用了,例如配置的port=3306,则可以直接用%port%输出

继续

set Ymd=%date:~,4%_%date:~5,2%_%date:~8,2% #获取当前年月日,我们主要是根据日期去备份
set safe_path=%backup_safe_path%%Ymd%      #最终保存的路径
md %safe_path%                             #创建路径
set tmp_file=tmp_db_list.txt               #设置临时数据库列表文件,我们需要将要备份的数据库写到临时文件里
(%mysql_bin%mysql --user=%user% --password=%pwd% --host=%host% --port=%port% -e "show databases;") >> %tmp_file%
for /f "usebackq delims=" %%a in (%tmp_file%) do (
    if not "%%a" == "" if not "%%a" == "Database" if not "%%a" == "information_schema" if not "%%a" == "test" if not "%%a" == "performance_schema" if not "%%a" == "mysql" (
        echo backup start --- %%a
        %mysql_bin%mysqldump --user=%user% --password=%pwd% --host=%host% --port=%port% --skip-lock-tables --default-character-set=utf8 --single-transaction --quick %%a > %safe_path%\%%a.sql
        echo finished --- %%a
        ping /n 3 127.0.0.1 >nul
    )
)

del /f /s /q /a %tmp_file%
echo backup is finished,save in %safe_path%
ping /n 3 127.0.0.1 >nul

完成!
然后双击测试一下backup.bat看看能不能备份成功,在mysql5.6及以上会有警告:
Warning: Using a password on the command line interface can be insecure
,在命令行接口使用密码登录不太安全,不影响使用。

3.建立windows任务计划,让批处理每天工作

右键计算机->管理->系统工具->任务计划程序->任务计划程序库

右键新建创建基本任务,填写名称个描述(这个随便你喜欢怎么填),下一步

触发器选每天,下一步

填写每天执行bat的时间,我的是凌晨3点,每隔一天发生一次,下一步

选择启动程序,按浏览找到backup.bat,参数就不用填写了,下一步

勾选完成时打开属性对话框(主要还有东西要改),不勾选也行,你要右键刚刚新建的任务计划然后按“属性”,修改以下

用批处理快速启动mysql mysql 批处理_mysql


用批处理快速启动mysql mysql 批处理_用批处理快速启动mysql_02


然后按确定就行了

需要完整文件的在这里下载