C# 编写的SqlServer 数据库自动备份服务,带配置,功能强大

图片 4

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

一、编写备份脚本

KVM虚拟化管理平台的实现

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

rem auther:www.yumi-info.com
rem date:20171222
rem ******MySQL backup start********
@echo off
forfiles /p "E:mysqlMySQL 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:mysqlMySQL Server 5.6binmysqldump" --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:mysqlMySQL BackUpbackup_%Ymd%.sql"
@echo on
rem ******MySQL backup end********

源码链接:

  1. 通过sql脚本进行数据库备份

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

根据KVM虚拟化管理的要求,设计并实现网页操作管理KVM虚拟机。设计原理架构如下图所示:

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

forfiles /p "E:mysqlMySQL BackUp" /m backup_*.sql -d -30 /c "cmd /c del /f @path" 

 图片 1

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 FilesWinRARwinrar.exe" ' +'a -df ' +@rarfile+' '+@bakfile
exec master..xp_cmdshell @rarcmd,NO_OUTPUT;

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

如上图所示,前台使用python的FLASK框架实现主程序和各个功能网页,通过Redis的发布订阅功能,实现前台和后台的交互,前台网页触发操作,发布操作到Redis的channel中,后台监听到操作之后触发执行对应的shell脚本文件对虚拟机进行操作,包括:创建虚拟机,删除虚拟机,开启虚拟机,关闭虚拟机,重启虚拟机,在线修改虚拟机的内存和CPU参数,在线添加和删除虚拟机磁盘以及虚拟机的在线迁移。其中,KVM宿主机的操作系统制作虚拟机是基于LVM分区的快照功能,实现虚拟机的快速创建和销毁。需要制作好各种操作系统的母盘。母盘的制作包括,安装对应的操作系统,安装VNC服务,安装SSH服务并设置服务开机自启动。其中,linux操作系统支持VNC和SSH两种远程方式,windows操作系统只支持VNC远程,也可以使用windows自带的桌面远程工具进行远程操作。以下是具体的实现:

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

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:DataBasexx’ +rtrim(replace(replace(replace(convert(varchar(20),getdate()-15, 120),’ ‘,”),’-‘,”),’:’,”))+’.rar’

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

1.前台具体实现:
根据要求实现如下功能设计图:

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

"E:mysqlMySQL Server 5.6binmysqldump" 

图片 2
前台是基于python的FLASK框架实现的,Flask是一个基于Python的web框架,它的设计目的是提供Web开发所需的最小功能子集。
Flask与别的框架(尤其是采用其他编程语言的框架)的不同之处在于:它没有绑定诸如数据库查询或者表单处理等功能库,以及它们所组成的整个生态系统。它倾向于对这些功能的实现方式不做任何限定。
这种系统带来的主要好处是:开发者能够使用他们想用的任何方式和工具,去设计他们的应用架构。另外,对于一些常见的通用功能,Flask没有以某种特定方式去实现,这意味着在Flask中,对标准库的使用会比其他框架里多,这保证了通用功能的稳定性及针对其他Python程序员的可读性。由于Flask社区十分庞大,所以该社区提供的添加通用功能的方式非常多。所以通过本系列教程,了解它们如何帮助我们避免重复造轮子。这些扩展的妙处在于,如果不需要那些额外的功能,就不用引入它们,这样我们的应用才会保持简洁、轻量。
这种系统的最大弊端是,大部分新的Flask用户不知道如何正确地规划大型应用的结构,最后弄出一大堆让人难以理解和维护的代码。所以本教程另一个重点是如何为Flask应用创建模型/视图/控制器(MVC)架构。
安装flask
安装flassk很简单,使用pip安装.
#pip install flask
本系统使用了FLASK的路由功能实现的,Flask是一个WSGI应用框架,这意味着我们进行Flask开发时,不需要
关注网络方面的操作,Flask应用的入口是封装过的网络请求包,出口是
网络响应,我们仅需要关注这个阶段内的处理逻辑。

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

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

WSGI服务器
:Flask虽然内置了简单的WSGI服务器,但其性能仅仅适用于开发期的调试。
Flask官网推荐了多种WSGI服务器,实现方式从多进程到多线程到协程,
这方面的选择我们在本课程中将不涉及。

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

REST适应性
:虽然Flask和Django一样,最初的出发点都是服务端的动态网页应用。但
Flask的设计使之也相当适用于面向资源的REST架构,在越来越移动化
并且单页应用越来越重要的WEB开发领域,这是Flask相对于Django相当
大的优势。
编写一个基于Flask的hello world相当容易:
1)导入Flask类
from flask import Flask
Flask类是Flask框架的核心类,它实现了WSGI应用规范。
2)创建Flask实例
app = Flask(__name__)
Flask构造函数的第一个参数指定一个引入名/importname。Flask框架
使用这个名字进行静态资源、模板、错误信息的定位。除非你清楚的理解它的
作用,通常情况下,我们总应该使用特殊变量_name。
Flask实例是可调用的(具有call方法),这个实例可以直接对接 WSGI服务器。
3)注册路由

使用方法如下

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

@route(‘/’)
def index():
return ‘Hello,Flask!’
注册路由就是建立URL规则和处理函数之间的关联。Flask框架依赖于路由
完成HTTP请求的分发。
路由中的函数被称为视图函数,其返回值将作为HTTP响应的正文内容。
4)对接并启动WSGI服务器
Flask封装了一个简单的开发用WSGI服务器,我们可以通过调用run()
启动服务器运行:
app.run(host=’0.0.0.0′,port=80)

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

至此,可以使用FLASK的route功能进行开发了。

没了,嘎嘎。。上图

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

前台工程框架代码结构,如下图所示:

图片 3

--host=127.0.0.1 

 图片 4

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图