【译】The Accidental DBA:SQL Server Backup

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

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

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

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

相关文章
相关标签/搜索