C# 编写的SqlServer 永利国际网站:数据库自动备份服务,带配置,功能强大

  1. 通过sql脚本进行数据库备份
--host=127.0.0.1 

如图是代码的结构图:

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

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

永利国际网站 1
最后是虚拟机在线迁移功能vm_migrate.html界面的实现:
永利国际网站 2
输入要迁移的虚拟机和要迁移的目标宿主机,点击迁移即可实现虚拟机的在线迁移。迁移成功之后页面会显示类似“迁移虚拟机成功”的字样。

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

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

2.1.Redis发布订阅实现原理:
发布订阅中使用到的命令就只有三个:PUBLISH,SUBSCRIBE,PSUBSCRIBE
PUBLISH 用于发布消息
SUBSCRIBE 也叫频道订阅,用于订阅某一特定的频道
PSUBSCRIBE
也叫模式订阅,用于订阅某一组频道,使用glob的方式,比如xxx-*可以匹配xxx-a,和xxx-b,xxx-ddd等等
关联操作:
如果已经存在订阅者,则添加到链表的尾部
如果没有订阅者,那么创建频道,然后添加订阅者
删除操作:
找到对应的链表,进行删除
如果删除后,链表为空,则删除频道
订阅模式:
新建一个pubsubPattern结构
添加到链表的尾部
退订模式:
查找相应的pubsubPattern然后删除
发送消息:
将消息发送给channel频道的所有订阅者
遍历整个pubsub_patterns表,查找匹配的模式,如果有一个或者多个模式与频道匹配,将消息发送给pattern模式的订阅者
相关命令:
查看所有的频道:PUBSUB CHANNELS
查询订阅者的数量:PUBSUB NUMSUB
查询服务器被订阅者的数量:PUBSUB NUMPAT
2.2.Redis安装:
1.)将其下载到/opt目录下解压并进入目录。
2)编译源程序
  make
  cd src
  make install PREFIX=/usr/local/redis
3.)接下来我们看看/usr/local/redis/bin目录下的几个文件是什么
  redis-benchmark:redis性能测试工具
  redis-check-aof:检查aof日志的工具
  redis-check-dump:检查rdb日志的工具
  redis-cli:连接用的客户端
  redis-server:redis服务进程
4.)Redis的配置
  daemonize:如需要在后台运行,把该项的值改为yes
  pdifile:把pid文件放在/var/run/redis.pid,可以配置到其他地址
bind:指定redis只接收来自该IP的请求,如果不设置,那么将处理所有请求,在生产环节中最好设置该项
  port:监听端口,默认为6379
  timeout:设置客户端连接时的超时时间,单位为秒
loglevel:等级分为4级,debug,revbose,notice和warning。生产环境下一般开启notice
  logfile:配置log文件地址,默认使用标准输出,即打印在命令行终端的端口上
  database:设置数据库的个数,默认使用的数据库是0
  save:设置redis进行数据库镜像的频率
  rdbcompression:在进行镜像备份时,是否进行压缩
  dbfilename:镜像备份文件的文件名
  dir:数据库镜像备份的文件放置的路径
  slaveof:设置该数据库为其他数据库的从数据库
  masterauth:当主数据库连接需要密码验证时,在这里设定
  requirepass:设置客户端连接后进行任何其他指定前需要使用的密码
  maxclients:限制同时连接的客户端数量
  maxmemory:设置redis能够使用的最大内存
appendonly:开启appendonly模式后,redis会把每一次所接收到的写操作都追加到appendonly.aof文件中,当redis重新启动时,会从该文件恢复出之前的状态
  appendfsync:设置appendonly.aof文件进行同步的频率
  vm_enabled:是否开启虚拟内存支持
  vm_swap_file:设置虚拟内存的交换文件的路径
vm_max_momery:设置开启虚拟内存后,redis将使用的最大物理内存的大小,默认为0
  vm_page_size:设置虚拟内存页的大小
  vm_pages:设置交换文件的总的page数量
  vm_max_thrrads:设置vm IO同时使用的线程数量

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

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

目录结构是:

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

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

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

↓↓↓↓

"E:mysqlMySQL Server 5.6binmysqldump" 

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

CSDN下载地址:

永利国际网站 3

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)注册路由

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

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

其中,主程序文件是KVM.py文件,实现监听Redis并执行shell脚本返回结果发布到Redis中。vm_info.list文件记录了创建虚拟机时的状态信息列表,vm_list文件记录了虚拟机当前在KVM宿主机的状态列表。Disk_list文件记录了磁盘的状态信息列表。如下:
#cat vm_info.list
xp01 1 2048000 10 Windows_xp running
centos 1 2048000 10 Linux_CentOS running
#cat vm_list
centos|192.168.0.105|1|2048000|centos|running
xp01|192.168.0.133|1|2048000|winxp|running
#cat vm_list
sdb|10|unuse
其次,前台页面VNC远程虚拟机需要在宿主机安装noVNC程序做代理,建立连接代理到虚拟机的VNC服务端口,才可以在页面实现websockity的访问。以下是建立连接代理的监听脚本start_vm_vnc.sh,虚拟机母盘制作都默认使用5901作为VNC服务的监听端口:
永利国际网站 4
页面的SSH远程访问Linux使用了shellinabox开源工具实现,在linux母盘中安装并设置开机启动即可,基于母盘创建的虚拟就也会有了。Shellinabox安装如下:
部署shellinabox:
1) 安装依赖:
#yum install git openssl-devel pam-devel zlib-devel autoconf automake
libtool
2)获取源代码:
#git clone && cd
shellinabox
3)生成编译配置信息:
#autoreconf -i
4)配置和编译:
#./configure && make
5)安装:
#make install
6)配置生成安全证书:
#openssl genrsa -des3 -out my.key 1024
#openssl req -new -key my.key -out my.csr
#cp my.key my.key.org
#openssl rsa -in my.key.org -out my.key
#openssl x509 -req -days 3650 -in my.csr -signkey my.key -out my.crt
#cat my.crt my.key > certificate.pem
7)启动:
#/usr/local/bin/shellinaboxd -c /root -u root -b
#/usr/local/bin/shellinaboxd –disable-ssl -c /root -u root
-b(不使用https)
8)查看监听端口:
#netstat -ntpl |grep 4200
9)查看监听进程:
#ps -ef |grep shell
10)浏览器访问:

调用处

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

至此,KVM虚拟化管理系统前后台实现完成。

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

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

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

 永利国际网站 5

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

代码结构:

楼下五步走

--events "yumi_website" > "E:mysqlMySQL BackUpbackup_%Ymd%.sql" 

永利国际网站 6

永利国际网站 7

--port=3306 

以下是各Shell脚本的功能说明:
1) create_linux_vm_xml.sh:
创建linux虚拟机xml配置信息脚本,将前台参数传递给给脚本,脚本根据参数修改配置文件的name,cpu,memory,mac地址,启动分区等等信息。并将生产的信息写入以虚拟机名称命名的xml文件中保存到指定的文件中。
2) create_window_vm_xml.sh:
创建windows虚拟机xml配置信息脚本,将前台参数传递给给脚本,脚本根据参数修改配置文件的name,cpu,memory,mac地址,启动分区等等信息。并将生产的信息写入以虚拟机名称命名的xml文件中保存到指定的文件中。
3) get_running_vm_info.sh:
获取虚拟机当前状态列表写vm_list文件中的脚本,通过系统命令和virsh命令获取虚拟机的状态,然后使用awk,sed,grep,wc和sort等工具分析提取需要的虚拟机信息组合成虚拟机前台展示的信息保存到vm_list文件中。
4) start_vm_vnc.sh:
创建虚拟机IP的noVNC代理监听进程脚本,根据vm_list文件的虚拟机信息,提取出ip地址,根据IP地址启动VNC的代理连接进程并后台运行,改脚本每5秒钟执行一次,以保证每个ip都能及时建立连接。
5) delete_vm.sh:
删除虚拟机脚本,删除虚拟机时触发的操作,删除该虚拟机的状态,xml配置文件和lvm快照分区的一切信息。无法恢复,需谨慎操作。
6) create_disk.sh:
创建磁盘脚本,根据名称和大小的参数在系统中创建虚拟磁盘,生成img镜像磁盘文件和xml磁盘配置信息,将其保存到指定的文件夹中供虚拟机挂载时调用。
7) get_disk_info.sh:
获取磁盘状态列表并写到disk_list文件中的脚本,通过系统命令和virsh命令获取磁盘的状态,然后使用awk,sed,grep,wc和sort等工具分析提取需要的磁盘信息组合成磁盘前台展示的信息保存到disk_list文件中。
8) mount_disk.sh
挂载磁盘到虚拟机脚本,通过触发参数挂载指定的磁盘到指定的虚拟机中,并且改写disk_list列表文件的信息,将该磁盘的状态改为挂载的虚拟机名称,表示该磁盘当前正在被哪个虚拟机使用,需要卸载之后才能分配给其他虚拟机使用。
9) umount_disk.sh:
卸载磁盘脚本,触发操作从指定的虚拟机中卸载该磁盘,卸载之后改写disk_list文件中的信息为unuse表示未被使用的状态,可以被其他虚拟机挂载使用。
10)delete_disk.sh:
删除磁盘脚本,触发操作,将该磁盘删除。如果没有被挂载是未使用的状态则直接删除该磁盘的xml配置文件和img镜像文件,并改写disk_list文件将其从中删除;否则,将磁盘从虚拟机中卸载掉之后删除该磁盘的xml配置文件和img镜像文件,并改写disk_list文件将其从中删除。
11)migrate.sh:
迁移虚拟机脚本,触发操作,传递虚拟机和目标宿主机作为参数执行虚拟机的在线迁移操作,需要在目标宿主机中有同样路径和名称的虚拟机分区磁盘,如果没有,则会使用lvm命令创建指定的分区之后再做迁移操作。
12)RedisHelper.py:
redis连接python脚本,创建python程序和redis的连接并创建channel监听,通过该连接进行信息的发布和订阅,实现前后台的信息交互,实时性强。
13)KVM.py:
后台python主监听进程脚本,监听redis,订阅前台发布的信息之后判断执行脚本触发操作,并将操作的结果通过redis发布信息到chaneel中,反馈给前台,是实现信息的交互。

  • 你是不是要问,那删除文件呢?

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

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

 永利国际网站 8

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website