使用mysqldump对MySQL进行定时备份的实践

Posted 激流中的树叶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用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的定时备份工作圆满完成。

 

以上是关于使用mysqldump对MySQL进行定时备份的实践的主要内容,如果未能解决你的问题,请参考以下文章

Linux中使用mysqldump对MySQL数据库进行定时备份

linux 定时备份mysql数据库

如何利用 Zabbix 监控 mysqldump 定时备份数据库是否成功?

技术干货:利用 Zabbix 监控 mysqldump 定时备份数据库是否成功 | 运维进阶

mysql 在linux下如何进行指定的数据库定时备份与删除XX天以前的备份文件?

MySQL 定时备份的几种方式(非常全面)