故障恢复和恢复模式(Crash Recovery & Recovery Models)
数据库的恢复模型是否影响故障恢复,在简单恢复模式里,你是否会丢失事务?在今天的文章里我想谈下这点,详细讨论下。
恢复模式(Recovery Models)
对于这个问题的最简单的答案是不会:恢复模型不会影响故障恢复,只用简单恢复模式你不会丢失事务。那数据库恢复模型的目的是什么?
你用恢复模型你只告诉SQL Server如何处理事务日志。SQL Server提供下列3个恢复模型:
- 完整(FULL)
- 简单(SIMPLE)
- 大容量日志(BULK_LOGGED)
我们来细谈下。每个新建的数据库默认是完整恢复模式(在完整数据库备份后!)。完整恢复模式意味着你需要进行定期事务日志备份。在事务日志备份后,SQL Server可以标记VLFs(虚拟日志文件(Vitural Log Files))为不活动,在下个检查点可以重写它们。如果你不进行定期的事务日志备份,SQL Server不能重写VLFs(因为它们还是活动的),这样的话你的事务日志会增长。
增长事务日志很慢(因为需要零值初始化(Zero Initialization))并导致日志碎片(Log Fragmentation)(大量不同的VLFs)。定期日志备份的另一个好处是你可以进行所谓的时间点恢复(Point in Time Recovery),即恢复你的数据库到指定的时间点。
如果你不在乎你的数据(我会被大家笑话的!),你可以把你的数据库恢复模式切换为简单。使用简单恢复模式,你不需要麻烦自己进行日常事务日志备份,因为在检查点(CHECKPOINT)SQL Server会标记VLFs为不活动。如果你没有长时间运行的事务,在这个恢复模式里,你的事务日志不会增长。简单恢复模式的一个副作用就是你不能进行时间点恢复(Point in Time Recovery)。
当你的数据库崩溃或损坏,你只能恢复你的数据库到你最近的完整数据库备份,外加可用的差异备份。在这个情况下你丢失多少数据取决于你最近的完整/差异备份的情况。对于OLTP数据库,我从不推荐简单恢复模式。在数据仓库的情景下倒可以使用,因为存储的数据基本不会有啥改变。
最后SQL Server还提供你大容量日志恢复模式。在SQL Server里,当你运行特定的操作,它们可以是最小化日志(Minimally Logged)(在SQL Server里没有无日志操作!)。如果你用的是大容量日志恢复模式。最小化日志意味着SQL Server不会写各个事务日志记录到事务日志,当你进行这样操作的时候。
SQL Server只通过所谓的BCM页(大容量修改映射页(Bulk Changed Map Page))标记修改的区为已修改。这样的话,当你进行最小化日志操作时,你的事务日志不会变得那么大。不好的副作用是在那期间(数据库运行在大容量日志恢复模式)你不能进行时间点恢复。因此在这个恢复模式下,你应该尽量缩短它的时间。例如:当你在运行最小化日志操作的时候,你才把数据库从完整恢复模式切换回大容量日志模式(运行完后切换回完整恢复模式)。
当你运行在大容量日志恢复模式里,你还是要进行事务日志备份。但它们的大小不会变小,因为SQL Server复制修改的分区(基于BCM页)到事务日志备份——如你从下图看到的一样。

小结
故障恢复过程绝不会受恢复模式影响。恢复模式志影响你的事务日志,还有你是否能进行时间点恢复。通常建议你应该使用默认的完整恢复模式加定期事务日志备份。因为用这个方法你可以最小化你的数据丢失。
感谢关注!
原文链接:
https://www.sqlpassion.at/archive/2016/05/23/crash-recovery-recovery-models
故障恢复和恢复模式(Crash Recovery & Recovery Models)的更多相关文章
- 二:Recovery models(恢复模式)
For each database that you create in SQL Server, with the exception of the system databases, you can ...
- Mac OS 10.12 - 在VMwear Workstation12.5.2中以两种方式进入恢复模式(Recovery)!!!
注意:如果你打算安装Mac OS10.12 到虚拟机里面学习,那么我强烈建议你在没有安装任何其它软件之前,按照我这篇博客来进入恢复模式(Recovery),禁用Rootless机制!!!这样处理后,你 ...
- 在VMwear 11中的Mac OS X 10.11+ 进入恢复模式(Recovery HD)
1,选中要启动的虚拟机,随后点击VM菜单的启动按钮后面向下箭头,随后点击菜单项”打开电源时进入固件“. 2,在虚拟机里面,用上下键移动到”Enter setup“上,随后继续下一步! 3,选中”Boo ...
- Android设备运用Clockworkmod Recovery恢复模式安装定制的Rom
Clockworkmod Recovery是一个由Cyanogen团队开发的用于Android设备的第三方定制Recovery恢复模式,也称为CWM Recovery,具体它有什么用处呢?请看关于Go ...
- 关于Google Android平台的ClockworkMod Recovery恢复模式
lockworkMod Recovery,它也被称为Clockwork与CWM,它是装载Google Android操作系统设备的一个自定义的Recovery恢复模式,它可以使得相关Android设备 ...
- Oracle实例的恢复、介质恢复( crash recovery)( Media recovery)
实例的恢复( crash recovery) 什么时候发生Oracle实例恢复? shutdown abort; 数据库异常down掉(机器死机,掉电...) 实例恢复的原因是数据有丢掉,使用redo ...
- 进入恢复模式(Recovery HD)
进入恢复模式(Recovery HD) 1,选中要启动的虚拟机,随后点击VM菜单的启动按钮后面向下箭头,随后点击菜单项”打开电源时进入固件“. 2,在虚拟机里面,用上下键移动到”Enter setup ...
- SQL Server恢复软件SysTools SQL Recovery/SysTools SQL Server Recovery Manager
SQL Server恢复软件SysTools SQL Recovery/SysTools SQL Server Recovery Manager http://www.systoolsgroup.co ...
- SQL Server中的事务日志管理(6/9):大容量日志恢复模式里的日志管理
当一切正常时,没有必要特别留意什么是事务日志,它是如何工作的.你只要确保每个数据库都有正确的备份.当出现问题时,事务日志的理解对于采取修正操作是重要的,尤其在需要紧急恢复数据库到指定点时.这系列文章会 ...
随机推荐
- Delphi XE5 支持的Android 版本
Delphi XE5 已经支持Android应用开发. 那XE5支持Android的哪些版本呢?Delphi编译的APP能部署到Gingerbread (2.3.3-2.3.7), Ice Crea ...
- poj3750-小孩报数问题(约瑟夫环)
一,题意: 中文题.二,思路: 1,输入. 2,无限循环1~n~1~n,直到输出n次,再跳出. 3,输出名字,并标记. 普通模拟版: #include<iostream> #include ...
- Spring MVC中Session的正确用法<转>
Spring MVC是个非常优秀的框架,其优秀之处继承自Spring本身依赖注入(Dependency Injection)的强大的模块化和可配置性,其设计处处透露着易用性.可复用性与易集成性.优良的 ...
- PostgreSQL 9.3发布
9月9日,PostgreSQL全球开发组宣布了9.3版发布的消息.从2010年9.0版开始,PostgreSQL已经连续四个版本稳定地按时在每年9月中旬发布,从一个侧面也显示了开发团队的强大实力. 9 ...
- 共享文件夹:The user has not been granted the requested logon type at this computer
场景重现 今天做一个项目测试,要用到虚拟机,于是在虚拟机(XP 32)上新建了一个共享的文件夹.然后我在Win7 机器上访问它得到如下的error 消息:
- android内部培训视频_第一节
声明:本视频为公司内部做android培训时录制的,无任何商业目的.同时鉴于水平有限,可能不符合您的需求,放在这里的目的是提供给公司同事下载,作为培训的一个记录,也作为一个系列教程的自我督促完成的理由 ...
- Log4net入门使用
简介 几乎所有的大型应用都会有自己的用于跟踪调试的API.因为一旦程序被部署以后,就不太可能再利用专门的调试工具了.然而一个管理员可能需要有一套强大的日志系统来诊断和修复配置上的问题. 经验表明,日志 ...
- MVC validate.js下使用 ajaxSubmit
首页定义验证实体 using System.ComponentModel.DataAnnotations; using System.Web.Mvc; namespace MvcApplication ...
- iOS------苹果设备处理器指令集(iPhone初代到iPhone5s)
(via 雅香小筑) Arm处理器,因为其低功耗和小尺寸而闻名,几乎所有的手机处理器都基于arm,其在嵌入式系统中的应用非常广泛,它的性能在同等功耗产品中也很出色. Armv6.armv7.armv7 ...
- 关于ie11 的开发者工具
win7旗舰系统64为,更新ie11: 新安装了ie11浏览器,安装以后发现原来可以正常使用的开发者工具不能使用,提示 Imposible use F12 Developer Tools (Excep ...