上一篇博文探讨了各种恢复模式和备份类型,这一节继续来探讨如何设计备份策略。设计一个数据库的最佳备份策略,会面临如何选择使用哪种恢复模式的问题,因为恢复模式控制着备份和还原的行为。一般来讲,简单恢复模式一般适合用于测试或开发数据库。对于生产数据库,最佳选择通常是完整恢复模式,还可以选择大容量日志恢复模式作为补充。但简单恢复模式有时也适合小型生产数据库(尤其是当其大部分或完全为只读时)或数据仓库使用。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
若要为特定数据库确定最佳恢复模式,应考虑数据库的恢复目标和要求,数据使用方式,员工因素以及是否可对日志备份进行管理等。
恢复目标要求 :
l  不丢失任何更改的重要程度如何?
l  重新创建丢失的数据的难易程度如何?
l  是否有两个或两个以上的数据库在逻辑上必须保持一致?
员工因素 :
是否雇用系统或数据库管理员?如果没有,那么由谁负责执行备份和恢复操作,如何对他们进行培训?
数据使用方式,针对当前数据库考虑下列问题:
数据库中的数据多长时间更改一次?
是否有些表明显比其他表修改频繁?
是否有关键生产周期?如果有,那么在这些周期中的使用方式是怎样的?数据库是否会经历插入操作和其他更新操作的高峰期?
可能需要计划在非高峰期进行数据备份。当大量使用 I/O 系统时,通常只需使用日志备份。
数据库是否会遇到可能无法立即检测到的危险更新或应用程序错误?
如果数据库会遇到这些情况,请考虑使用完整恢复模式。这可以使用日志备份将数据库恢复到特定时间点。
何时使用简单恢复模式?
如果符合下列所有要求,则使用简单恢复模式:
不需要故障点恢复。如果数据库丢失或损坏,则会丢失自上一次备份到故障发生之间的所有更新,但你愿意接受这个损失。
愿意承担丢失日志中某些数据的风险。
不希望备份和还原事务日志,希望只依靠完整备份和差异备份。

 

何时使用完整恢复模式?
如果符合下列任一要求,则使用完整恢复模式(还可以选择使用大容量日志恢复模式):
必须能够恢复所有数据。
必须能够恢复到故障点。
希望可以还原单个页。
愿意承担事务日志备份的管理开销。
数据库包含多个文件组,并且希望逐段还原读/写辅助文件组(以及可选地还原只读文件组)。

 

何时使用大容量日志恢复模式?
大容量日志恢复模式作为完整恢复模式的附加补充。建议仅在运行大规模大容量操作期间以及在不需要数据库的时间点恢复时使用该模式。
数据库是否会发生周期性的数据库大容量操作?

在该恢复模式下,多数大容量操作仅进行最小日志记录。如果使用完整恢复模式,则可以在执行此类大容量操作前临时切换到大容量日志恢复模式。通常,大容量日志恢复模式与完整恢复模式相似,只是它按最小方式记录多数大容量操作。大容量日志恢复模式仅适合在能够以最小方式记录操作的大容量操作期间使用。建议在其余时间使用完整恢复模式。当完成一组大容量操作后,建议立即切换回完整恢复模式。

 

下面就以简单恢复模式和完整恢复模式来设计几个备份策略。
一,简单恢复模式下的备份策略设计:
1, 仅完整数据库备份策略
这种策略仅适用于经常备份的小型数据库,数据丢失风险比较大
此策略仅使用包含数据库中所有数据的完整数据库备份。例如下图完成5个完整数据库备份后发生灾难,只需要还原最近的备份(在 t5 时点执行的备份)。还原此备份会将数据库恢复到 t5 时点。由 t6 框表示的所有后续更新都将丢失。
 

在这种策略下为了最大程度降低数据丢失的风险,可以增加备份次数和缩短备份间隔,如下图:
 

 
2完整数据库备份+差异数据库备份策略
这种策略比只使用仅完整数据库备份策略,减少了数据丢失风险。例如下图在第一个完整数据库备份完成后,会接着进行三个差异数据库备份。随着时间推移,第三个差异备份已经足够大,因而下一个备份重新使用完整数据库备份。该数据库备份将成为新的差异基准。
在这种备份策略下,如果在t4时进行“差异数据库备份3”完成后而t5时的“完整数据库备份2”还没进行的情况下发生灾难,只需要先还原t1时的“完整数据库备份1”,接着还原最后一次即t4时的“差异数据库备份3”就可以恢复数据库,但是t4以后的数据会丢失。
二,完整恢复模式下的备份策略设计:
1, 完整数据库备份+日志备份策略
例如下图已完成了完整数据库备份 Db_1 以及两个日志备份 Log_1 和 Log_2。在 Log_2 日志备份后的某个时间,数据库出现数据丢失或灾难。在还原这三个备份前,必须备份活动日志(日志尾部,如果能备份的话)。然后依次还原 Db_1、Log_1 和 Log_2,而不恢复数据库(还原时必须使用norecovery选项),接着还原并恢复结尾日志备份 (还原时必须使用recovery选项)。这将把数据库恢复到故障点,从而恢复所有数据。
 
2, 完整数据库备份+差异数据库备份策略
例如下图在第一个数据库备份完成后,会接着进行三个差异数据库备份。随着时间推移,第三个差异备份已经足够大,因而下一个备份重新使用完整数据库备份。该数据库备份将成为新的差异基准。
 
在这种备份策略下,如果在t10时进行“差异数据库备份3”完成后而t13时的“完整数据库备份2”还没进行的情况下发生灾难,还原时,必须先备份活动日志(日志尾部,如果能备份的话)。然后依次还原t10时的“完整数据库备份1”,最后一次即t4时的“差异数据库备份3”(还原时必须使用norecovery选项)接着还原并恢复结尾日志备份 (还原时必须使用recovery选项)。这将把数据库恢复到故障点,从而恢复所有数据。
3, 完整数据库备份+差异数据库备份+日志备份策略
这种备份策略可以最大程度地降低数据丢失的风险,也是比较推荐的备份策略!
例如下图从t1到t12时间段内,进行了一次完整数据库备份,若干日志备份,三个差异数据库备份。

在这种备份策略下,当t12时的日志备份完成后数据丢失或发生灾难,如何还原数据库呢?步骤如下:
第一步:备份活动日志(日志尾部,如果能备份的话)
第二步:还原t1时的“完整数据库备份1”
第三步:还原t10时的“差异数据库备份3”
第四步:还原t11时的日志备份
第五步:还原t12时的日志备份
第六步:还原第一步的“尾日志备份”
其中第二,三,四,五步还原时必须用norecovery选项,第六步用recovery选项。
根据业务系统级别的不同,一般可以一周进行一次完整数据库备份,一天进行一次差异数据库备份,30分钟或1小时进行一次日志备份。
 
 

转载于:https://blog.51cto.com/terryli/484434

SQL Server 2008备份策略设计下(六)相关推荐

  1. SQL Server 2008备份大全实战(七)

    这一篇博文探讨下SQL Server 2008 备份的实际操作,事实上SQL Server 2008并不关心数据是备份到物理磁盘上还是磁带上,在SQL Server 2008数据库备份中,预定义的目标 ...

  2. SQL Server 2008备份数据库失败,拒绝访问的原因

    SQL Server 2008备份数据库失败,拒绝访问的原因 原文:SQL Server 2008备份数据库失败,拒绝访问的原因 备份数据到特定目录是出现拒绝访问,然后测试备份到C盘根目录正常. 查了 ...

  3. SQL Server 2008基于策略的管理

    基于策略的管理(Policy Based Management),使DBA们可以制定管理策略,并将这些策略应用到服务器.数据库以及数据环境中的其他对象上去.经过精心设计的管理策略可以帮助DBA们对数据 ...

  4. SQL Server 2008 : 基于策略的管理(Policy-Based Management)

    在SQL Server 2008中提出了一套新的管理机制,就是所谓的基于策略的管理(姑且可以称为PBM).它的主要优势如下 按需管理:PBM提供了系统配置的逻辑视图,因此DBA们可以预先定义各自所需要 ...

  5. sql server 2008学习4 设计索引的建议

    索引设计的建议: 一.检查where子句和连接条件列 当一个查询提交到sql server时,查询优化器尝试为查询中引用的所有表查找最佳的数据访问机制, 一下是它所进行的方式. 1.优化器识别Wher ...

  6. 找不到 配置管理器。sql server 2008 r2 在win10下

  7. SQL Server 2008空间数据应用系列六:基于SQLCRL的空间数据可编程性

    友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2008 R2调测. 2.具备 Transact-SQL 编程经验和使用 SQL Server Ma ...

  8. 详细介绍微软SQL Server 2008

    SQL Server 2008是一个重大的产品版本,它推出了许多新的特性和关键的改进,使得它成为至今为止的最强大和最全面的SQL Server版本.这篇文章详细介绍了Microsoft SQL Ser ...

  9. 微软 Sql Server 2008

    详细介绍微软SQL Server 2008 http://dev.yesky.com/264/7681264_4.shtml 2007-11-25 09:00 作者: 戴羽 出处: IT专家网 责任编 ...

最新文章

  1. 一个线程池中的线程异常了,那么线程池会怎么处理这个线程?
  2. 【FFmpeg】使用 FFmpeg 处理音视频格式转换流程 ( 解复用 | 解码 | 帧处理 | 编码 | 复用 )
  3. Linux/windows下nginx的安装及使用
  4. 【C/C++12】天气APP:不同数据建表入表,数据交换(exptables.cpp,ftpputfiles.cpp)
  5. 生成EXCEL文件是经常需要用到的功能,我们利用一些开源库可以很容易实现这个功能。...
  6. matlab如何提高运算速速,如何提高以下程序的运算速度及有选择性的保存数据?...
  7. 敏捷开发系列学习总结(6)——你用什么工具管理项目
  8. jupyter报错Invalid credentials
  9. 阿里云安装宝塔打不开 已经开放安全组_centOS7 apache安装PHPMYADMIN
  10. ubuntu下编译安卓7.0源码
  11. contentprovider java_访问不了自己创建的Contentprovider,报错:java.lang.SecurityException: Permission Denial...
  12. lopatkin俄大神精简中文系统Windows 8.1 Pro 18655 x86-x64 ZH-CN PIP
  13. 首旅如家新生活方式空间品牌--如咖啡正式落地
  14. 程序员请万分珍重你的第一份工作,否则后悔了概不负责
  15. 训练和推理阶段的BN和Dropout
  16. [置顶] XMPPFrameWork IOS 开发(六)聊天室
  17. 人工智能电话机器人的功能
  18. java 累加函数_请你编写一个方法(函数),功能要求从参数x累加到y,并返回累加后的整数结果。...
  19. Clickhouse 时间日期函数
  20. win10安装MySQL常见问题_win10 安装MySQL过程和遇到的坑

热门文章

  1. LeetCode--004--寻找两个有序数组的中位数(java)
  2. 分布式版本控制系统 Git 教程
  3. 使用正则表达式匹配HTML 下各种title标签
  4. 转:Flash 插件面板 DragonBonesDesignPanel 的绿色安装方法
  5. 集成公司内部的多个子系统(兼容B/S和C/S),实现单点登录功能的多系统的统一入口功能...
  6. DirectShow camera demo
  7. BI.寒号鸟请吃烧烤/意外入手“speed- dear friends vol.1”/入手“鲍家街43号”/我爱红红/我爱红红...
  8. java 自带thread分析工具_java自带的jvm分析工具
  9. c语言中的if语句_If ... C中的其他语句解释
  10. esl8266开发之旅_从ESL老师到越南软件开发人员的旅程