MySQL实现远程备份的原理,基于 Web 的 SQLServer 远程备份管理系统的设计与实现

【摘 要】通过对SQL Server 2000数据库维护计划的深入研究,揭示配置数据库备份管理任务与系统提供的各项存储过程间的关系。对各相关系统存储过程进行详细分析,总结了存储过程的使用方法。结合网站技术,PHP技术等,探索通过网络操作SQL Server系统存储过程的方法。最终实现一个基于Web的远程数据库备份管理系统。

0.引言

随着计算机技术的发展和信息系统的广泛应用,数据库系统的应用也越来越广泛,并逐渐成了信息系统的基础和核心。 数据库备份是保障数据安全的非常有效的手段。 基于系统安全性的考虑,系统的很多管理和维护工作需要通过网络的来实现。如何让数据库备份操作员在不直接接触数据库服务器的前提下进行数据库备份的管理操作成为了一个难题。事实上,SQL Server 本身是一个网络数据库系统。 虽然通过 SQL Server 的客户端软件可以远程连接服务器端实现数据库备份管理任务, 但是这种方法要求数据库服务器开放 SQL Server 本身的通信端口。 开放越多的端口就意味着越大的风险,开放端口还需要对防火墙做特别配置。 本文探索并实现了一项通过 Web 界面实现数据库服务器远程备份管理的系统。在保证系统的安全性的同时提高了系统可用性,取得了良好的效果。

1.数据库维护计划及其工作原理

数据库维护计划是一个很好的工具,可以帮助我们设置核心维护任务以确保数据库的良好执行、定期备份以防系统失败等。 数据库维护计划向导给系统管理员提供了一个方面的操作界面来实施数据库维护任务的创建,修改和删除。通过数据库维护计划我们可以设置的维护任务有优化、 完整性、完全备份、事务日志备份等。 但数据库维护计划所能进行的管理维护工作最终都是通过 SQL Server 中的作业来完成。每一项数据库维护计划都会自动添加一项作业,作业名有一定的格式。例如:若数据库维护计划的名字为:“Pubs 维护”,且设置数据库维护计划做完全备份,则会自动添加名为:‘DB 维护计划“Pubs 维护”的 DB 备份作业’的作业。既然数据库维护计划的作业都通过作业完成,为何不直接添加作业来完成所需数据库维护工作呢?主要原因是直接添加作业需要设置很长的命令,比如上述作业:‘DB 维护计划“Pubs 维护”的 DB 备份作业’,其作业执行的命令为:

a2ed9c7f49f003c5c9c70a9747caf780.png

数据库维护计划所进行的各项维护工作如数据库优化、完整性检查、 数据库备份、 事务日志备份等工作最终都需要相应的 Transact-SQL 脚本来完成。

Transact-SQL 脚本命令难以编写和维护,所以 SQL Server 专门为这些数据库维护脚本设置了一个方便快捷的操作界面,即“数据库维护计划”工具。 可以简单的把理解数据库维护计划理解为配置数据库自动运行作业的一个图形化前端界面。

2. SQLServerAgent及作业的自动完成

SQL Server 中的自动完成作业都在SQLServerAgent 下运行 。SQLServerAgent 是执行作业、监视 Microsoft SQL Server 及激发警报的Windows 系统服务 。 SQLServerAgent 是一个允许我们自动执行某些管理任务的服务。 必须启动 SQLServerAgent 服务,才能使本地或多服务器的管理任务自动运行。每个作业都包含常规属性,作业步骤,调度信息,通知四个方面的配置。 配置完毕的作业在 SQLServerAgent 的监视下会自动运行。

3.系统的设计以及实现

9724c849a839ccdda15b14275df60b8d.png

SQL Server 提供了一套系统存储过程,通过运行相应的系统存储组合可以实现添加系统自动运行的作业。通过 Web 界面,结合 PHP 语言来连接数据库并调用相应存储过程, 从 Web 界面传递相关作业配置参数,可以方便的实现备份任务的管理。程序大致流程如图 4-1 所示:

上述 3 个步骤需按照顺序进行设置,其中(2)最为重要,由于我们的主要目标是实现数据库备份任务的远程管理,故此处只说明实现系统备份的作业脚本。

首先,添加作业并设置作业的常规属性,相关 PHP 代码如下:

dec63f6b6906527791d3198cac3d3377.png

第 1 行设定作业名称为“pub_backup”, 第 2 行设置该作业所属分类为“数据库维护”,第 3 行初始化存储过程 sp_add_job 并返回操作句柄到 PHP 变量$sp,第 4-6 行分别设置存储过程 sp_add_job 的相应参数,第 7 行执行存储过程,完成对作业的添加工作。其次,添加作业步骤:添加作业步骤需要使用 sp_add_jobstep 存储过程, 并设置其相应参数。 若要进行数据库备份,需设置存储过程的 @command 参数为相应的数据库备份命令,具体命令如下:

4e0e003a06a41625c33c5f5e26c07a81.png

其中, 我们使用了常规扩展过程 xp_sqlmaint 来执行备份任务,

$myplan_id,$back_dir 和$del_policy 均为 PHP 变量, 其值通过在 PHP脚本中设置或从其他 PHP 语句执行结果取得。 分别代表该作业步骤对应的维护计划 ID,要备份到的目录,对备份文件删除的策略等。

接下来添加作业调度:

作业调度的添加通过系统存储过程 sp_add_jobschedule 来完成,需要设置的参数有调度名称、调度类型、开始日期、结束日期等。

3a09fca5cfa2bc58d4a33f5dc392d5a3.png

SQL Server 使用整数值来表示不同的调度类型 (见表 4-1)。 调度类型通过设置存储过程 sp_add_jobschedule 的 @freq_type 参数来进行设置。

e62ac81c2b2ae4906660422735e4d737.png

其中调度类型 1,64,128 比较简单,不在赘述。 调度类型 4,8,16分别对应图 4-2 中(1)的三个选项。

对于每天,可以设置是每多少天执行一次,该参数由@freq_interval 来进行控制 ,例如 @freq_interval=5,则为每 5 天执行一次该作业。对于每周、每月可以设定是每周或每月的哪些天执行,该设置也由参数 @freq_interval 来进行控制,但控制方法和每天(类型 4)略有不同。对于每周:可以设定在每周 7 天中的任何天的组合执行作业。 此时参数@freq_interval 的设置有一定的规律。 若用一个 7 位二进制表示一周中的七天,周日为最低位,周六为最高位。 若规定在某日执行作业,则设置相应的二进制位数据为1, 则最终二进制的值即为参数@freq_interval 的值。

例如:要使作业在周二执行,则 @freq_interval = (0000100)2 = (8)10;要使作业在周一 、周三 、周日执行 ,则 @freq_interval = (0001011)2= (11)10

对于每月:参 数 @freq_interval 表示在每月的某一天执 业 。 例 如

@freq_interval=15 表示在每月的第 15 天执行作业。

除此之外,对于每周和每月周期调度来说,还可以设定作业执行之间的周数或月数。 该参数由 @freq_recurrence_factor 来进行控制。 例如,要设置每 3 个月的第 18 天来执行作业,则应设置 @freq_interval=18,@freq_recurrence_factor=3

图 4-2 中的 (4) 的数据域分别由参数 @freq_subday_interval 和@freq_subday_type 控制 ,@freq_subday_type=1 代表一次发生于参数@active_start_time 所给定的时间 ,@freq_subday_type=4 代表发生周期为参数 @freq_subday_interval 所给定的分钟,

@freq_subday_type=8 代表发生周期为参数 @freq_subday_interval所给定的小时,

图 4-2 中的 (5) 的数据域分别对应于参数 @active_start_time 和@active_end_time

图 4-2 中的 (6) 的数据域分别对应于参数 @active_start_date 和@active_end_date

上述各变量值均可以通过 PHP 程序从 Web 界面获取, 并传递给数据库的存储过程, 进而设置出按照特定模式执行的数据库备份任务,完成管理工作。限于篇幅,HTML 页面制作及详细 PHP 实现过程在此省略。

4.结束语

本文通过对 SQL Server 数据库数据库维护计划运行原理的分析,基于 PHP 动态网站设计语言和 SQL Server 存储过程设计实现了一个基于 Web 界面的数据库备份管理系统。 该系统和其他远程数据库管理系统比较而言,具有更好的兼容性和更高的安全性;同时简化了系统维护任务,提高了整体系统的健壮性。基于同样的原理,还可以设计实现其他各项数据库维护计划的 Web 管理系统, 此部分内容的研究与探讨留于以后工作中完成。

【参考文献】

[1]张莉,王强,赵文昉,等:《SQL SERVER 数据库原理及应用教程 》[M],北京 :清华大学出版社,2003.

[2]王恩波,《网络数据库实用教程———SQL Server 2000》[M],北京:高等教育出版社,2004.

[3]PHP官方站点(http:/ /www.php.net).

作者简介:蔡万景(1981—),男,硕士研究生,2006年毕业于兰州大学计算机软件与理论专业,现于郑州大学西亚斯国际学院电子信息工程学院任教,主要研究方向为操作系统,计算机网络,数据库应用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值