故障恢复和恢复模式(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):大容量日志恢复模式里的日志管理
当一切正常时,没有必要特别留意什么是事务日志,它是如何工作的.你只要确保每个数据库都有正确的备份.当出现问题时,事务日志的理解对于采取修正操作是重要的,尤其在需要紧急恢复数据库到指定点时.这系列文章会 ...
随机推荐
- 一步一步学ROP之linux_x86篇
一步一步学ROP之linux_x86篇 作者:蒸米@阿里聚安全 一.序 ROP的全称为Return-oriented programming(返回导向编程),这是一种高级的内存攻击技术可以用来绕过 ...
- [.net 面向对象程序设计进阶] (13) 序列化(Serialization)(五) Json 序列化利器 Newtonsoft.Json 及 通用Json类
[.net 面向对象程序设计进阶] (13) 序列化(Serialization)(五) Json 序列化利器 Newtonsoft.Json 及 通用Json类 本节导读: 关于JSON序列化,不能 ...
- .NET垃圾回收(GC)原理
作为.NET进阶内容的一部分,垃圾回收器(简称GC)是必须了解的内容.本着“通俗易懂”的原则,本文将解释CLR中垃圾回收器的工作原理. 基础知识 托管堆(Managed Heap) 先来看MSDN的解 ...
- ios 避免循环引用
类似网络请求的情况下会导致循环引用,但是 如果网络请求的对象是局部变量,就必须用self,不能用weakSelf,否则,一旦当前方法所在对象销毁,那weakSelf就为空了(如果目的是这样,那就另当别 ...
- [ASP.NET MVC 大牛之路]02 - C#高级知识点概要(1) - 委托和事件
在ASP.NET MVC 小牛之路系列中,前面用了一篇文章提了一下C#的一些知识点.照此,ASP.NET MVC 大牛之路系列也先给大家普及一下C#.NET中的高级知识点.每个知识点不太会过于详细,但 ...
- Golang与C#之switch区别
Golang与C#之switch区别 Go是Google开发的一种编译型,可并行化,并具有垃圾回收功能的编程语言. C#是微软公司发布的一种面向对象的.运行于.NET Framework之上的高级程序 ...
- ZooKeeper典型应用场景
ZooKeeper典型应用场景一览 数据发布与订阅(配置中心) 发布与订阅模型,即所谓的配置中心,顾名思义就是发布者将数据发布到ZK节点上,供订阅者动态获取数据,实现配置信息的集中式管理和动态更新.例 ...
- python 栈和队列(使用list实现)
5.1.1. Using Lists as Stacks The list methods make it very easy to use a list as a stack, where the ...
- ModelDataExchange - Import
ModelDataExchange - Import eryar@163.com Abstract. The ModelDataExchange import utility enables the ...
- Change Line Type in OpenCascade
Change Line Type in OpenCascade eryar@163.com 关键字KeyWords:OpenCascade,Line Aspect, Line Type 在OpenCa ...