Sql Server数据库备份的另类解决方案

Sql Server数据库备份的另类解决方案(1) (转)
一、背景
一旦系统正常运行以后,系统维护最主要工作就是数据安全与可恢复性。本方案(以下提到的数据库均指微软的Sql Server7.0或以上数据库)主要探讨数据库备份与恢复。
一般的数据备份解决方案无非是以下三种:(1)、磁带备份;(2)、双机热备份;(3)、手工备份。作为一般的中小型政府部门和企业采用磁带备份,代价太高,性能价格比不高;普遍采用的可能是双机热备份方案,但是用户可能依然不放心,还需要手工备份,把数据存放到一个与外界断绝联系的可控环境中,这种情况是普通存在的。所以作为双机热备份方案的辅助方案或者在条件限制的情况下,作为双机热备份的替代方案,有必要整理出一套手工备份方案。

二、设计思路
Sql Server数据库本身提供非常方便强大的备份功能(DTS),可以以向导的方式引导用户备份到本地局域网的机器或者远程的机器上,但是现在出现一个问题:就是一旦数据库大了的话,本地局域网备份速度可以接受,可是远程备份,尤其是拨号上网,速度就可能慢,一旦时间过长,网络可能断掉,又得重新备份,能否提出一种方案充分利用Sql Server数据库本身已有的备份功能(DTS),同时又解决备份速度慢的问题,考虑到数据库备份文件的可压缩比率非常高,可以直接对备份文件进行压缩操作,是否更有效率?
下面是设计思路,最后定型取决于两种方式效率的高低。

第一步:利用Sql Server本身带有的备份功能(DTS)把数据库全部或者差额定时备份到某个目录,一旦备份成功,这时候在指定的备份目录下有.bak文件存在;
第二步:利用公司自开发的解压缩组件RichZip把.bak文件压缩成另一个文件.zip文件,RichZip的压缩比等同于WinZip;
第三步:通过Http协议下载.zip文件到本地,按照不同的项目和日期保存;
第四步:如果需要恢复,把.zip文件解压缩成.bak文件,然后再用Sql Server的工具把备份文件恢复;

需要实验解决的几个问题:
1、在同一环境下,直接使用Sql Server的备份工具与这种方案所需要的时间哪一个更长?是否在不同量级里面有不同的结果?
2、是自己利用组件开发一个基于http协议的下载程序,还是直接采用其它的共享下载工具是否更有效率?比如说NetAnts(网络蚂蚁)或者其它下载工具。

说明:
1、该方案只在微软平台上做过实际操作:操作系统Window NT4.0或者以上(推荐使用Win2000),数据库Sql Server6.5或者以上(推荐使用Sql7.0)。

三、实际情况

3.1 实验结果

3.1.1 实验一结果:无论在哪种连接环境下,局域网还是拨号上网,直接使用Sql Server的备份工具与本方案的效率差距都比较大,只是由于数据库小时,直接使用Sql Server的备份工具比本方案方便一些。

以下是一些简单的、不完整的实际操作数据,仅供参考。

操作环境:联想56K调制解调器,上网速度52K,通过SysGate上网,平均3K左右。

库名     备份文件大小 压缩文件大小      下载时间
              Sql备份工具 本方案
SoftEnterPrise 27970Kb   2109Kb(13.26倍)  没有耐心等待,强行中断 12分钟
SoftProduct   10265Kb   739Kb(13.89倍) 18分钟 3分钟
SoftProductHz  11948Kb   930Kb(12.85倍)   25分钟 5分钟


Sql Server数据库备份的另类解决方案(2)



实际操作过程中是使用网络蚂蚁下载的,三个库的备份文件一共50MB,压缩后一共不到4MB;使用Sql备份工具,至少需要一个小时左右,而使用要方案最多不超过20分钟,这中间的效率是不可比拟的,还不包括在使用Sql备份工具时如果断网造成的延时。

3.1.2 实验二结果:建议使用专门的下载工具,如网络蚂蚁或者其它下载工具,是基于如下考虑:A、专门的下载工具功能强大,提供断点续传、多线程、定时下载等许多功能;B、许多用户都会使用,而且非常熟练,不需要再培训;C、比较稳定,如果自己要开发下载程序的话,一个是功能不强大,另外需要一段相当长的测试时间,需要投入时间与精力,不合算。如果是因为集成或者产品化的原因,可以考虑做一个相对简单的下载程序,与其它应用结合,或者开发一个管理备份文件的程序,管理起来比较方便。

3.2 服务器配置及源码
3.2.1 服务器端配置
3.2.1.1 Sql Server的配置:
-先建立Device(设备);
-然后备份具体的数据库到Device(设备)中,可以选择备份的时间及备份的方式;
重复上述操作,直到做好所有需要备份的数据库配置。
注意事项:
1、 备份文件存在的目录不要让用户能通过Http协议访问到;
2、 根据实际需要选择全额备份还是差额备份以及定时操作;
3、 如果系统备份以后,备份目录下就会出现.bak文件。
3.2.1.2 虚拟目录的配置
-为备份系统建立一个虚拟目录,如BackUp,一定要加上挑战反应,不允许匿名访问,这样访问时就需要输入系统管理员的用户名和密码,增强安全性。
3.3 源码
实现思路:为了保护数据的安全性,在3.2.1.2中要把备份系统的虚拟目录设成不允许匿名访问,需要系统管理员的密码;另外在3.2.1.1注意事项中1提到的不让备份文件存在的目录让用户能通过Http协议访问到,需要在生成下载文件后临时生成一个虚拟目录,下载完毕后再删除掉,确保安全。
一共包括四个文件,BackSet.asp、BuildvDir.asp、DelvDir.asp、BackList.asp。
-BackSet.asp:选择要建立临时下载虚拟目录的站点,同时临时给定下载虚拟目录的名称;
- BuildvDir.asp:根据BackSet.asp文件给定的站点和虚拟目录名称,建立虚拟目录;
-DelvDir.asp:删除在BackSet.asp文件给定的站点中的虚拟目录;
-BackList.asp:压缩备份文件,建立对应的被压缩后备份文件的下载链接;,
3.3.1 BackSet.asp文件解释
3.3.1.1 源码

<body bgcolor="#EEEEEC">
<center>
<font size=4>生成或者删除**项目备份数据库虚拟目录</font>
</center>
<hr size=1>
<br>

<center>
<form name="BackForm" method="Post">
<table border=1 width=70%>
<tr>
<td width=40% align=center>
<font size=2>
请选择要使用的站点名称:
</font>
</td>
<td>
<select Name="WebSiteIndex">
<%
dim ObjServer
dim obj3W
dim sServerName
set ObjService=GetObject("IIS://" & Request.ServerVariables("SERVER_NAME" & "/W3SVC"
for each obj3w in objservice
if IsNumeric(obj3w.Name) then
sServerName=Obj3w.ServerComment
if Instr(sServerName,"管理 WEB 站点" =0 then
sServerName=obj3w.Name & "-" & Obj3w.ServerComment
%>
<option value="<%=obj3w.Name%>"><%=sServerName%>
<%
end if
end if
next
set ObjService=Nothing
%>
</select>
</td>
</tr>
<tr>
<td width=40% align=center>
<font size=2>
请输入备份操作的虚拟目录名称:
</font>
</td>
<td>
<input Type=text name="vDir" value="SrrdBackUp" size=42>
</td>
</tr>
</table>
<br>
<br>
<input type=button Name="Build" value="生成虚拟目录">
<input type=button Name="Del" value="删除虚拟目录">
</form>
</center>
</body>
</html>

<script language=vbs>
Sub Build_Onclick()
'生成临时虚拟目录
if Trim(document.BackForm.vDir.value)="" then
msgbox "请输入虚拟目录名称!",16,"错误"
exit sub
else
document.BackForm.action="BuildvDir.asp"
document.BackForm.submit
end if
end sub
Sub Del_Onclick()
'删除临时生成的虚拟目录
if Trim(document.BackForm.vDir.value)="" then
Sql Server数据库备份的另类解决方案(4)

[www.Googln.com 2002-11-18 9:39:26 ]

msgbox "请输入虚拟目录名称!",16,"错误"
exit sub
else
document.BackForm.action="DelvDir.asp"
document.BackForm.submit
end if
end sub
</script>

说明:
1、 由于在实际过程中,经常是关闭缺省网站或者一台机器上有多个网站存在,提取IIS中站点,可以让使用者选择不同的站点下建立虚拟目录;
2、 要用代码对IIS进行操作,需要ADSI的配合;
3、 要对IIS进行操作,必须有系统管理员的权限,所以加挑战反应既是为了安全,也是实际需要。
3.3.1.2 界面,见图一


图一


3.3.2 BuildvDir.asp文件解释
3.3.2.1 源码

<%
dim iWWWIndex '站点顺序
dim vDirName '虚拟目录名称
dim pDirName '对应的物理目录名称
dim sDefaultPage '虚拟目录使用的缺省页面名称
'获得要使用的站点顺序
iWWWIndex=Request.Form("WebSiteIndex"
'获得要生成的虚拟目录名称
vDirName=Request.Form("vDir"
'当前文件物理路径
pDirName=request.servervariables("Path_Translated"
pDirName=Left(pDirName,instrrev(pDirName,"/"-1)
'缺省页面名称
sDefaultPage="BackList.asp"
if CreateVirtulDir(iWwwIndex,vDirName,pDirName,sDefaultPage)=false then
'建立系统虚拟目录失败
%>
<script language=vbs>
msgbox "创建虚拟目录失败!",16,"错误"
window.history.back
</script>
<%
else
%>
<script language=vbs>

备注:本文引用自http://www.itpub.net/redirect.php?fid=40&tid=775893&goto=nextoldset

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
<h3>回答1:</h3><br/>SQL Server数据库备份是将数据库中的数据和对象复制到另一个位置,以便在需要时可以恢复数据。备份可以在不同的介质上进行,如磁盘、磁带或网络共享文件夹。备份可以是完整的、差异的或事务日志的。完整备份包括整个数据库,差异备份包括自上次完整备份以来发生的更改,而事务日志备份包括数据库中的所有事务日志。 SQL Server数据库恢复是将备份的数据和对象还原到数据库中。恢复可以是完整的、部分的或点恢复的。完整恢复是将完整备份和所有差异备份和事务日志备份还原到数据库中。部分恢复是将某些文件组或文件还原到数据库中。点恢复是将数据库还原到某个特定的时间点。 备份和恢复是SQL Server数据库管理中非常重要的任务,可以保护数据库免受数据丢失和损坏的影响。在备份和恢复过程中,需要考虑备份的类型、备份的位置、备份的频率、备份的保留期、恢复的类型和恢复的时间等因素。 <h3>回答2:</h3><br/>SQL Server是一种关系型数据库管理系统,为了保护数据库中的数据和应对可能出现的数据损坏情况,及时进行数据库备份是非常必要的。数据库备份是指将数据库存储在磁盘或磁带等介质上,以便在需要恢复数据时能够快速恢复。 SQL Server提供了多种备份方式,包括完整备份、差异备份、日志备份和文件和文件组备份。完整备份是指将整个数据库备份,因此可以恢复整个数据库。差异备份和日志备份是对完成完整备份后的增量备份,以保证数据的最新性。文件和文件组备份是对某一数据库的文件或数据库一部分的文件进行备份,以便某些数据的恢复。 数据库恢复是指在数据丢失或数据损坏时,通过备份将数据重新还原到正常状态的过程。要进行SQL Server数据库恢复,需要首先将数据库置为单用户模式,然后恢复到最新备份,最后将数据库转为多用户模式。整个过程需要注意备份和恢复的时间,确保能够在用户需求的时间内完成。 SQL Server还提供了许多选项和设置,以提高备份和恢复的可靠性和性能。一些常见的设置包括压缩备份、去除旧备份和备份过期等。这些设置可以根据具体需求进行调整。 总之,SQL Server数据库备份和恢复是非常重要的,需要在数据存储的任何环节中加以考虑。备份和恢复的正确性和有效性可以保证数据的安全和完整性,为企业和用户带来更多的价值和信心。 <h3>回答3:</h3><br/>SQL Server 数据库备份是指将数据库中的所有数据和对象复制到另一个位置,以防止意外删除、硬件损坏、病毒攻击等情况导致数据丢失。SQL Server 数据库的备份方法主要有以下几种: 1. 完全备份(Full Backup):将整个数据库备份到另一个位置,包括所有数据和对象。 2. 差异备份(Differential Backup):只备份从上一次完全备份后的修改数据,可以节省备份时间和空间。 3. 事务日志备份(Transaction Log Backup):备份数据库的日志文件,可以用来还原到某个特定时间点的状态。 SQL Server 数据库的恢复方法主要有以下几种: 1. 完全恢复(Full Recovery):使用完全备份和所有事务日志备份来还原数据库。 2. 简单恢复(Simple Recovery):只使用最新的完全或差异备份恢复数据库。 3. 坏块恢复(Piecemeal Restore):只恢复部分数据库,如只恢复某个表空间或文件组。 在执行备份和恢复操作时,需要注意以下事项: 1. 数据库备份需要进行定期的计划,备份文件的存储位置要保证安全可靠,备份过程中不能影响数据库的正常运行。 2. 恢复操作需要谨慎,精确还原到需要的时间点,破坏生产环境的可能性要尽量避免。 3. 数据库备份和恢复需要进行测试,以确保备份恢复方案的可靠性。实施合适的备份恢复方案,可以减少数据丢失的可能性,保障系统的稳定性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值