图片 11

在Windows环境下使用MySQL:实现自动定时备份

数据库自动备份服务,带配置,还算可以吧

一、编写备份脚本

周末抽时间,编写了一个这样的工具,可以让,对数据库不了解或不熟悉的人,直接学会使用备份,省时省力,同样,我也将一份,通过脚本进行备份的,也奉献上来,

rem auther:www.yumi-info.com
rem date:20171222
rem ******MySQL backup start********
@echo off
forfiles /p "E:\mysql\MySQL BackUp" /m backup_*.sql -d -30 /c "cmd /c del /f @path"
set "Ymd=%date:~0,4%%date:~5,2%%date:~8,2%0%time:~1,1%%time:~3,2%%time:~6,2%"
"E:\mysql\MySQL Server 5.6\bin\mysqldump" --opt --single-transaction=TRUE --user=root --password=123456 --host=127.0.0.1 --protocol=tcp --port=3306 --default-character-set=utf8 --single-transaction=TRUE --routines --events "yumi_website" > "E:\mysql\MySQL BackUp\backup_%Ymd%.sql"
@echo on
rem ******MySQL backup end********
  1. 通过sql脚本进行数据库备份

这是一段很常见的windows批处理脚本文件,我来简单解释一下其中的关键部分:

通过脚本备份数据库,同样也支持压缩,但是需要安装winrar来实现,整体来说也还行,在服务器上创建一个 维护计划,就可以实现,也是很方便的,脚本如下:

forfiles /p "E:\mysql\MySQL BackUp" /m backup_*.sql -d -30 /c "cmd /c del /f @path" 
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;
declare @prefix         nvarchar(100),
        @datefile       nvarchar(100),
        @bakfile        nvarchar(100),
        @rarfile        nvarchar(100),
        @rarcmd         nvarchar(150),
        @str_date       nvarchar(100),
        @sql            nvarchar(100)

--设置备份的目录      
set @prefix='D:/DataBase/' 
set @str_date = replace(replace(replace(convert(varchar(20),getdate(), 120),' ',''),'-',''),':','')
set @datefile = 'xx' +@str_date
set @bakfile = @prefix+@datefile+'.bak'
set @rarfile = @prefix+@datefile+'.rar'
--备份
BACKUP Database mpe_db_Data TO DISK = @bakfile WITH NOFORMAT, NOINIT,  NAME = N'xx-完整 数据库 备份', SKIP, NOREWIND, NOUNLOAD,  STATS = 10
--压缩rar
set @rarcmd ='"c:\Program Files\WinRAR\winrar.exe" ' +'a -df ' +@rarfile+' '+@bakfile
exec master..xp_cmdshell @rarcmd,NO_OUTPUT;

forfiles 用来对备份目录下的过期备份进行删除。“E:\mysql\MySQL
BackUp”是备份文件所在的路径,可以自行修改。“backup_*.sql”指的是该路径下所有以“backup_”开头,以“.sql”作为后缀的数据库备份文件。而后面的数字“30”表示30天过期。

别问我代码都是干啥的,无非就是打开权限,创建变量、时间戳的文件名、备份脚本、启动备份,哈哈。。都说完了,你也不用问了,

set "Ymd=%date:~0,4%%date:~5,2%%date:~8,2%0%time:~1,1%%time:~3,2%%time:~6,2%" 
  • 你是不是要问,那删除文件呢?

    –删除15天之前的备份
    set @sql=’del d:\DataBase\xx’ +rtrim(replace(replace(replace(convert(varchar(20),getdate()-15, 120),’ ‘,”),’-‘,”),’:’,”))+’.rar’

使用set命令来定义一个名为“Ymd”的变量,这个变量的值就是后面的一大串规则,简单说就是当前的日期和时间

为啥删除15天的?你想删除多少天,自己写, -15 的15,随你填写。

"E:\mysql\MySQL Server 5.6\bin\mysqldump" 

好了,言归正传,下面是我编写的windows 服务实现,请看:

这一行命令就是调用MySQL自带的备份工具了,注意这个路径必须写成你自己的“mysqldump.exe”所在的路径,一般都是在MySQL安装路径的/bin目录下。而这一行命令后面紧跟着一大串的参数,我们挑几个重要的来解释:

  1. 通过C#编写的windows服务进行数据库备份
--user=root 

使用方法如下

连接MySQL数据库服务的账户,通常该账户必须具备数据库备份操作的权限。为了简便我们使用了root,但是在实际生产环境中并不建议使用root账户,避免账户和密码泄露,从而造成不必要的麻烦。

  • 通过 服务部署工具.bat 配置和安装windows服务
--password=123456 

没了,嘎嘎。。上图

这是连接MySQL数据库服务的密码

图片 1

--host=127.0.0.1 

图1 使用管理员,打开部署脚本

这是数据库服务所在的服务器ip地址

图片 2

--port=3306 

图2 根据指示进行配置操作,输入1 是进入配置

这是数据库服务所在的服务器的端口号

图片 3

--events "yumi_website" > "E:\mysql\MySQL BackUp\backup_%Ymd%.sql" 

图3 配置界面

events参数即实现了将数据库备份到一个指定的文件这一操作。”yumi_website”是需要做备份的数据库,而大于号“>”右边的就是我们的备份文件所保存的服务器目录和文件名了。

 图片 4

二、设定Windows任务

图4 安装完成后,启动服务

完成了上述步骤后,我们需要添加Windows计划任务。

好了,全部操作演示完毕,是不是说,那么师傅,代码呢?

在Windows
Server2012中,我们进入服务器管理面板,点击右上角菜单栏中的“工具”,选择其中的“任务计划程序”:

楼下五步走

图片 5

↓↓↓↓

打开了任务计划程序之后,我们点击右侧的“创建基本任务”:

↓↓↓↓

图片 6

↓↓↓↓

然后,我们需要填写任务的名称,以及描述信息:

↓↓↓↓

图片 7

↓↓↓↓

点击下一步之后,我们需要设定任务的执行频率,我选择的是“每天”:

CSDN下载地址:https://download.csdn.net/download/l9861226/10585437

图片 8

暂时还没有通过,得等等才通过审核,刚刚上传上

再次点击“下一步”,设置任务执行的时间,我选择了夜深人静的1点:

(代码纯手工打造,要点积分,别介意哈)

图片 9

代码遇到一个小小的bug,当备份数据库巨大时,有的服务器会出现超时现象,我将SqlCommand的 CommandTimeout值设置为3600秒了,问题解决,因为数据大小是32个G,收缩日志之后,所以出现了这个问题,以解决,各位自行修改代码解决即可,代码如下:

在“下一步”中,我们选择“启动程序”:

 

图片 10

 图片 11

在之后的对话框中,我们需要选择刚才所编写的批处理文件:

调用处

图片 12

实现代码如下:

完成这些步骤后,windows会给我们看一下整个任务的概述信息:

 public static int ExecuteSqlSetTimeOut(string cmdText, int timeOut)
        {
            SqlCommand cmd = new SqlCommand();
            PrepareCommand(cmd, connection, null, CommandType.Text, cmdText, null);
            cmd.CommandTimeout = timeOut;
            int val = cmd.ExecuteNonQuery();
            cmd.Parameters.Clear();
            return val;
        }

图片 13

完事~!!!啦啦啦。。。

确定无误之后,点击“完成”就可以了。此时我们就会看到在Windows的任务列表里,多了一条新的任务:

 

图片 14

 

至此,在Windows环境下自动备份MySQL的设置就全部完成了。

以上这篇在Windows环境下使用MySQL:实现自动定时备份就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章: