使用mysqldump对MySQL进行定时备份的实践
公司里一直以来都在使用MySQL作为数据库进行软件的开发,但截止到目前为止,公司里开发的软件并没有对MySQL进行自动备份(含已经在客户正常使用的程序)。
考虑到这是一个巨大的风险,今天准备将MySQL自动备份的问题搞定。在处理该问题之前,考虑到MySQL是一个使用范围较广泛的数据库产品,网上肯定有非常多的自动备份工具,所以也没太过用心。
在网上搜索了一段时间之后才发现MySQL的自动备份并不像MS SQLServer,它并没有可视化的工具来支持,和我最开始想的差距有点大。
综合了网上资料和时间性,我选择了使用MySQL自带的mysqldump进行自动备份。
步骤1:批处理命令编写
由于mysqldump支持批处理命令,且我司和客户使用的都是Windows操作系统,故在参考了很多网上知识后编写了一个备份批处理命令,将其写为1个bat文件,文件内容如下:
echo
set backdir="C:\db_backup"
set dbname=cj_manage
set mysqlsetupdir="C:\db\mysql-5.7.14-winx64"
set rootPWD=Enlong123
echo forfiles /p "C:\db_backup" /m %dbname%_*.sql -d -30 /c "cmd /c del /f @path"
forfiles /p %backdir% /m %dbname%_*.sql -d -30 /c "cmd /c del /f @path"
if /i %time:~0,2% lss 10 set hh=0%time:~1,1%
if /i %time:~0,2% geq 10 set hh=%time:~0,2%
set mn=%time:~3,2%
set ss=%time:~6,2%
set time=%hh%%mn%%ss%
set "Ymd=%date:~0,4%%date:~5,2%%date:~8,2%%time%"
cd /d "%mysqlsetupdir%/bin"
mysqldump --opt -u root --password=%rootPWD% %dbname% > %backdir%/%dbname%_%Ymd%.sql
echo
其中:
set backdir="C:\db_backup" 设置备份文件的存储目录
set dbname=cj_manage 设置要备份的数据库名称
set mysqlsetupdir="C:\db\mysql-5.7.14-winx64" 设置mysql的安装目录
set rootPWD=Enlong123 设置root的登录密码
如下代码是完成将备份前30天的文件删除:
forfiles /p %backdir% /m %dbname%_*.sql -d -30 /c "cmd /c del /f @path"
文件形式是以数据库+当前时分秒的时间来命令的。由如下代码设置文件名称:
if /i %time:~0,2% lss 10 set hh=0%time:~1,1%
if /i %time:~0,2% geq 10 set hh=%time:~0,2%
set mn=%time:~3,2%
set ss=%time:~6,2%
set time=%hh%%mn%%ss%
set "Ymd=%date:~0,4%%date:~5,2%%date:~8,2%%time%"
%backdir%/%dbname%_%Ymd%.sql 这里构建了完成的文件的名称
这里我们的数据库都是默认的3306端口,如果端口发生变化需要在mysqldump命令中加入 -P的参数,这里不做具体阐述;
根据上面的批处理文件并结合我的实际,我在我司的一个服务器上直接执行bat文件,执行完成后其已经执行了一遍备份,证明批处理文件正确无误,可以进行接下来的工作
步骤2:设置定时任务执行批处理文件
由于是windows操作系统,我们采用windows中的“任务计划程序”来处理,具体步骤参见下面介绍:
2.1 打开windows操作系统的控制面板,在控制面板中选择“管理工具”打开,然后选中其中的“任务计划程序”打开
2.2 打开后,点击创建任务按钮,
2.3 在弹出的界面中首先填写执行计划任务的名称,然后选中“不管用户是否登录都要运行”
2.4 点击上图中的“触发器”选项卡,并点击“新建”按钮
2.5 在弹出的界面中设置定时任务的周期,这里我选择每天晚上的20:00,并点击确定按钮,如下图
2.6 点击确定后回到开始的界面选择“操作”选项卡,并点击新建“按钮”:
2.7 在弹出的界面中选择要执行的bat批处理文件,然后点击确定按钮
2.8 最后点击创建任务界面上的确定按钮,会弹出输入密码界面:
注意:这里输入的密码为登录到操作系统的用户名和密码。
输入正确的密码后,定时任务即创建完毕,等待第二天检查是否成功。
第二天经检查确定,已正确执行,至此MySQL的定时备份工作圆满完成。