彻底明白SQLServer数据备份恢复
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
彻底明白MS SQLServer数据备份/恢复
众所周知,数据库在企业信息系统占有非常重要的地位,随着微软SQLServer性能的提升和其简单易用的特点,越来越多的中小企业采用微软SQLServer数据库系统,也正是SQLServer的入门门槛低,很多企业没有配备专职的数据库管理员,而是由系统管理员兼任,而且大部分的管理员并没有受过专业的训练,缺乏相应的数据库管理经验。
在我们的技术支持中,有这么一个用户,他们的数据库系统用于一个简单的联机事务处理系统,主要涉及的操作是频繁的增删改操作,他们碰到的主要问题是数据库日志增长异常的快速,几乎是两三天的时间就增加1G的数据量,用户管理员尝试了各种办法,就是没办法使数据库日志的容量降下来。
这个问题主要是用户选择的数据库模式和频繁的事务操作导致数据库日志的快速增长,而这些都和数据库的备份恢复有密切关系,下面我们就数据库系统比较重要的数据备份以及相关的知识做一介绍。
一.选择数据恢复模式:选择何种数据恢复模式,不仅影响数据的备份/恢复策略,同时影响数据备份/恢复操作。
SQLServer有三种恢复模式,简单恢复、完全恢复和大容量日志记录恢复。
下面比较三种模式的差异:
u 简单恢复:顾名思义,简单恢复模式管理操作最简单,当然功能也最简单,简单模式仅允许进行数据库备份,不允许进行日志备份,并且数据库日志空间是循环使用的,所以简单模式无法将数据库还原到故障点或还原点。
对于重要的联机事务处理系统,不推荐采用这种恢复模式;
u 完全恢复:是SQLServer的缺省恢复模式,简单的说,完全恢复模式具备对数据库故障的完全防范,其操作最负杂,功能最强。
完全恢复模式允许将数据库还原到故障点或还原点。
这种模式的日志记录方式和简单模式不同,日志空间是非循环使用的,所以很容易引起日志文件的快速增长;建议重要的联机事务处理系统采用完全恢复模式,并且数据库日志文件放在单独的镜像磁盘。
注:选择完全恢复模式,SQLServer只有在第一次完全数据库备份或恢复模式切换后才开始记录日子序列的,所以如果要使事务日志可用,必须在这之前执行数据库全备份操作;
u 大容量日志记录恢复:这个模式和完全恢复模式比较接近,区别在于当发生select into、bulk insert等操作时,系统并没有记录完整的日志。
二.定义好数据备份策略:理解了数据库不同恢复模式的区别后,我们就可以根据实际情况设计数据备份策略,下面针对常用的简单恢复和完全恢复模式给出备份策略,应用中可以根据实际情况做相应的调整,具体的备份恢复命令可以参考SQLServer联机帮助:
u 简单恢复:当采用该模式时,发生故障时,只能使用备份的数据文件,无法利用日志文件恢复,所以应当:至少执行数据库全备份一次,定期进行数据库差异备份(可以定制SQLServer的计划任务来定期执行),这样当数据库发生故障时,就可以通过还原全备份文件和差异备份文件来恢复数据,减少损失;
u 完全恢复:采用该模式时,应当充分利用数据库日志文件进行数据恢复,保障最大限度的恢复用户数据,所以应当:至少执行数据库全备份一次,定期执行数据库差异备份(可选),定期备份数据库日志文件(可选,为保证日志文件的安全和避免日志文件快速增长,建议执行),上述过程可以重复执行,这样当故障发生时,就可以通过还原数据库数据文件和日志文件来恢复数据,减少损失;
三.下面我们列出常见的应用场景,给出相应的操作建议:
u 数据库采用完全恢复模式,用户数据文件损坏:首先备份数据库活动日志(backup log dbname to disk=’backup log file name’ with no_truncate),然后依次恢复数据库全备份文件、恢复差异备份文件,恢复备份的日志文件、恢复备份的活动日志;
注:1、备份命令中蓝色的部分需替换成实际的数据名和备份文件名;
2、恢复数据文件和日志文件时,需带norecovery参数,恢复活动日志时带
revovery参数;
u 数据库采用完全恢复模式,某用户在早上10:25分误删除一批非常重要的数据:首先停止任何用户操作,备份数据库活动日志,然后依次恢复数据全备份文件、差异备份文件、日志备份文件、活动日志(restore log dbname from disk=’backup log file name’ with recovery , stopat=’2004-07-21 10:25:00.000’)
u 数据库采用完全恢复模式,数据库日志非常大,希望减少日志文件大小:执行数据库全备份,然后截断数据库日志(backup log dbname to disk=’’ with no_log)、收缩数据库、再次执行数据库全备份;针对这种情况,要避免数据库日志文件快速增长,需要定期备份数据库日志文件;。