最近重新翻看The Accidental DBA,将SQL Server Backup部分稍作整理,方便以后查阅。此篇是Part 1
Part 2:The Accidental DBA:Troubleshooting Performance
Part 3:The Accidental DBA:Troubleshooting
一、Understanding RTO and RPO
1.1、RTO(Recovery Time Objective),停机时间,how much downtime is acceptable

--downtime per year(24*365,5-nines means 99.999% up-time)
select 60*24*365*(1-0.99999)    --5.25600 minutes
select 60*24*365*(1-0.9999) --52.5600 minutes
select 24*365*(1-0.999) --8.760 hours

1.2、RPO(Recovery Point Objective),数据丢失,how much data or work it’s acceptable to lose
二、Recovery Models and Backup Types
2.1、Recovery Models(恢复模式)
完整:数据库中所有修改完整记录日志;仅在执行事务日志备份才截断日志
大容量日志:部分修改(比如索引重建或批量导入)能最小化记录日志;仅在执行事务日志备份才截断日志
简单:部分修改(比如索引重建或批量导入)能最小化记录日志;进行检查点(checkpoint)操作时会截断日志;不能进行事务日志备份
总之,如果你的数据库使用完整/大容量日志恢复模式,你必须周期性的执行事务日志备份,否则事务日志会不断的增长。
2.1、Backup types(备份类型)
完整:备份整个数据库,它是其他备份的基础。完整备份会备份数据文件中的所有数据+部分事务日志记录。事务日志记录用于恢复此数据库时恢复到事务一致性。完整备份不会截断事务日志,实际上它不会以任何方式影响事务日志。
事务日志:备份自上次事务日志备份后产生的所有事务日志记录。事务日志备份不能执行,直到一个完整备份已经执行;但是一旦完整备份执行,事务日志备份和完整备份不再受任何一方影响。
差异:备份自上次完整备份后所有变更的数据。差异备份是累积的,而不是增量的。差异备份用于加快恢复速度,它本质上等效于最近一次完整备份之后的所有事务日志备份的净效果。
其他更小粒度的数据备份:完整文件组备份、完整文件备份、差异文件组备份、差异文件备份
灾难发生的第一件事是执行一个事务日志备份(尾日志备份),捕获自上次调度事务日志备份之后的所有事务日志。然后按照完整备份+差异备份+事务日志备份+尾日志备份的顺序恢复。
三、Planning a Recovery Strategy
你必须明确需要多快恢复数据库到某个Point,然后使用这些信息设置备份并且在灾难来袭时可以正确恢复。
就数据丢失而言,能容忍的数据丢失定义了事务日志备份的执行频率。如果能容忍15分钟的数据丢失,那么你必须至少每15分钟执行一次事务日志备份。如果零容忍数据丢失,依赖事务日志备份是很危险的,因为灾难可能破坏数据和日志文件,以致无法进行尾日志备份。这种情况下,你应该选择数据镜像、AlwaysOn等同步技术。
就停机时间而言,能容忍的停机时间定义了整个恢复序列完成需要多快,从最近的完整备份到最后的事务日志备份恢复。这意味着你将不得不对恢复进行测试,以确保在最坏的情况下可以在停机时间内恢复。
3.1、恢复策略
1、定义数据库的停机时间和数据丢失需求
2、计算满足步骤1所需的恢复
3、计算满足步骤2所需的备份
4、测试恢复序列确保其满足步骤1的条件
5、如果恢复序列不满足步骤1,则返回到步骤3(或者推迟停机需求,或提供一个高可用解决方案允许快速故障转移到数据库的冗余副本)
四、Essential BACKUP Options
COMPRESSION:压缩备份,减小备份文件,加快备份恢复速度
COPY_ONLY:对于周期备份计划,想单独获取一个备份文件,使用此选项不影响差异备份基准/事务日志备份链
DESCRIPTION and File Names:备份描述,并提供明了的文件名称
CHECKSUM:写入介质前检查校验和
STATS:打印执行进度
五、Backup Testing for Validation
如果你的备份有使用CHECKSUM选项,你至少应该做类似的事情:

RESTORE VERIFYONLY
FROM DISK = N'F:\SQLskills\20130609_SalesDB_Full.bck'
WITH CHECKSUM;
GO

最好是实际执行恢复操作,使用CHECKSUM选项;然后运行一致性检查(DBCC CHECKDB),以确保你将使用的备份都有效。
如果你发现你的备份损坏了,你可以进行新的备份,或者使用"相对旧"的备份,这些备份是你一直保留的。
六、Backup Storage and Retention
6.1、备份存储
存储备份的最糟糕的地方就是与数据库本身相同的I/O子系统。
一个常见的备份存储策略:首先备份到本地磁盘存储,备份到网络共享,或者备份本地存储然后拷贝到网络共享,然后将备份拷贝到线上归档系统并且创建一个离线备份。
6.2、备份保持期
如果你不能使用最新的完整备份,那么最好就是使用它之前的那个完整备份,然后结合其他的差异+事务日志备份,你就可以恢复数据。
如果备份策略是完整备份/周+差异备份/天+事务日志备份/30分钟,我会尽量保持线上一个月的备份,线下三个月的备份。
总结
1、什么是停机时间(RTO)和数据丢失(RPO)需求,为什么它们对你的数据库很重要
2、三种恢复模式,它们是如何影响日志和日志备份的;三种主要的备份类型(完整、差异、事务日志)
3、如何设计一个将RPO和RTO需求考虑在内的恢复策略,并依此创建备份策略
4、常用的备份选项
5、验证备份文件确保在你需要的时候,它们可用
6、存储备份文件的多个副本(本地/远程,线上/线下);备份保持期,灾难恢复时可以使用"相对旧"的备份来恢复

【译】The Accidental DBA:SQL Server Backup的更多相关文章

  1. 【译】第二篇 SQL Server代理作业步骤和子系统

    本篇文章是SQL Server代理系列的第二篇,详细内容请参考原文. SQL Server代理作业由一系列的一个或多个作业步骤组成.一个作业步骤分配给一个特定的作业子系统(确定作业步骤去完成的工作). ...

  2. 【译】第一篇 SQL Server代理概述

    本篇文章是SQL Server代理系列的第一篇,详细内容请参考原文. SQL Server代理是SQL Server的作业调度和告警服务,如果使用得当,它可以大大简化DBA的工作量.SQL Serve ...

  3. 【译】第九篇 SQL Server安全透明数据加密

    本篇文章是SQL Server安全系列的第九篇,详细内容请参考原文. Relational databases are used in an amazing variety of applicatio ...

  4. 【译】第一篇 SQL Server安全概述

    本篇文章是SQL Server安全系列的第一篇,详细内容请参考原文. Relational databases are used in an amazing variety of applicatio ...

  5. 【译】第二篇 SQL Server安全验证

    本篇文章是SQL Server安全系列的第二篇,详细内容请参考原文. 验证是检验主体的过程.主体需要唯一标识,那样SQL Server可以确定主体有哪些权限.正确的验证是提供安全访问数据库对象的必要的 ...

  6. 【译】第九篇 SQL Server代理了解作业和安全

    本篇文章是SQL Server代理系列的第九篇,详细内容请参考原文 在这一系列的上一篇,学习了如何在SQL Server代理作业步骤启动外部程序.你可以使用过时的ActiveX系统,运行批处理命令脚本 ...

  7. SQL Server Backup & Restore

    USE [master]; GO CREATE DATABASE test; GO CREATE DATABASE test2; GO BACKUP DATABASE test TO DISK = ' ...

  8. 【译】The Accidental DBA:Troubleshooting

    最近重新翻看The Accidental DBA,将Troubleshooting部分稍作整理,方便以后查阅.此篇是Part 3Part 1:The Accidental DBA:SQL Server ...

  9. 【译】The Accidental DBA:Troubleshooting Performance

    最近重新翻看The Accidental DBA,将Troubleshooting Performance部分稍作整理,方便以后查阅.此篇是Part 2Part 1:The Accidental DB ...

随机推荐

  1. 第9天:CSS精灵图

    今天重点学习了CSS精灵图. "CSS精灵",英语css sprite,所以也叫做"CSS雪碧"技术.是一种CSS图像合并技术,该方法是将小图标和背景图像合并到 ...

  2. Webstorm 提示 Can't use Subversion command line client

    Webstorm 提示 Can't use Subversion command line client Webstorm 提示 Can't use Subversion command line c ...

  3. 菜鸟之路Vue----一

    Vue api 学习笔记之 全局配置 1.Vue全局配置 Vue.config是一个对象,它包含了Vue的全局变量配置. #silent  用来取消 Vue 所有的日志与警告,其值值类型为布尔值(Bo ...

  4. Android笔记: 播放提示音 的简单方法

    public static void sendSound(Context mContext) { //上下文 Uri mUri= RingtoneManager.getDefaultUri(Ringt ...

  5. PyQt4简单小demo

    #coding=utf-8 import sys from PyQt4.QtCore import * from PyQt4.QtGui import * class FontPropertiesDl ...

  6. [2014-12-29]使用Enum位模式进行多重状态(或权限)管理

    前言 对于Enum在AspNet Mvc中的应用,我之前提到一种扩展,如何在 Asp.net Mvc 开发过程中更好的使用Enum.这里将介绍另一种更好的使用Enum的方法. Enum定义 以一个代表 ...

  7. jsp页面附件上传暂存的处理

    有没有遇到页面是新建一个新对象,对象里面需要上传附件,但是只有当对象保存时才将附件一同上传到数据库的情况? 这种情况的处理可以参考狐狸的思路: @jsp页面创建一个botton bn,该button的 ...

  8. C#输出杨辉三角形

    话不多说直接上代码: class Program { static void Main(string[] args) { ;//杨辉三角形的长度 Console.Write("输入杨辉三角长 ...

  9. echarts堆叠图展示,根据数据维度的粒度判断是否展示数据

    1.定义一个参数,返回根据判断什么条件是否显示值; 2.var a = '<%=(String)request.getAttribute("type")%&>' ...

  10. WebServices 之 WSDL

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt234 一,WSDL概述 WebServices Description La ...