欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SQL Server数据库的三种恢复模式:简单恢复模式、完整恢复模式和大容量日志恢复模式

程序员文章站 2022-08-25 19:26:16
如何图形界面下修改恢复模式 找到你想修改的数据库 右键 > 属性  > 左侧 选项既可看到 1.simple 简单恢复模式, simple模...

如何图形界面下修改恢复模式

找到你想修改的数据库 右键 > 属性  > 左侧 选项既可看到

SQL Server数据库的三种恢复模式:简单恢复模式、完整恢复模式和大容量日志恢复模式

1.simple 简单恢复模式,

simple模式的旧称叫”checkpoint with truncate log“,其实这个名字更形象,在simple模式下,sql server会在每次checkpoint或backup之后自动截断log,也就是丢弃所有的inactive log records,仅保留用于实例启动时自动发生的instance recovery所需的少量log,这样做的好处是log文件非常小,不需要dba去维护、备份log,但坏处也是显而易见的,就是一旦数据库出现异常,需要恢复时,最多只能恢复到上一次的备份,无法恢复到最近可用状态,因为log丢失了。 simple模式主要用于非critical的业务,比如开发库和测试库,但是道富这边的sql server(即使是生产库)大都采用simple模式,是因为这边的sql server大都用于非critical的业务(critical的数据库大都采用oracle和db2),可以忍受少于1天的数据丢失(我们的job每天都会定时备份全库)。

如果需要压缩数据库日志(shrink语句),将数据库模式切换到简单恢复模式后压缩率才是最高的,如果你的数据库在完整恢复模式或大容量日志回复模式下采用日志压缩,压缩后的日志大小并不会很理想。

2.full 完整恢复模式,

和simple模式相反,full模式的旧称叫”checkpoint without truncate log“,也就是sql server不主动截断log,只有备份log之后,才可以截断log,否则log文件会一直增大,直到撑爆硬盘,因此需要部署一个job定时备份log。full的好处是可以做point-in-time恢复,最大限度的保证数据不丢失,一般用于critical的业务环境里。缺点就是dba需要维护log,增加人员成本(其实也就是多了定时备份log这项工作而已)。

3.bulk-logged 大容量日志恢复

bulk-logged模式和full模式类似,唯一的不同是针对以下bulk操作,会产生尽量少的log: 1) bulk load operations (bcp and bulk insert). 2) select into. 3) create/drop/rebuild index 众所周知,通常bulk操作会产生大量的log,对sql server的性能有较大影响,bulk-logged模式的作用就在于降低这种性能影响,并防止log文件过分增长,但是它的问题是无法point-in-time恢复到包含bulk-logged record的这段时间。 bulk-logged模式的最佳实践方案是在做bulk操作之前切换到bulk-logged,在bulk操作结束之后马上切换回full模式。

以下是补充更简单易懂

sql server 2008 支持三种恢复模式,即简单恢复模式、完整恢复模式和大容量日志恢复模式。

1、简单恢复:无日志备份。自动回收日志空间以减少空间需求,实际上不再需要管理事务日志空间。 最新备份之后的更改不受保护。在发生灾难时,这些更改必须重做。 只能恢复到备份的结尾。

2、完整恢复:需要日志备份。数据文件丢失或损坏不会导致丢失工作。可以恢复到任意时点(例如应用程序或用户错误之前)。

3、大容量日志恢复:需要日志备份。是完整恢复模式的附加模式,允许执行高性能的大容量复制操作。通过使用最小方式记录大多数大容量操作,减少日志空间使用量。
如果在最新日志备份后发生日志损坏或执行大容量日志记录操作,则必须重做自该上次备份之后所做的更改。否则不丢失任何工作。可以恢复到任何备份的结尾。不支持时点恢复。

其中,如果符合下列任一要求,则使用完整恢复模式:
• 您必须能够恢复所有数据。
• 数据库包含多个文件组,并且您希望逐段还原读/写辅助文件组(以及可选地还原只读文件组)。

• 您必须能够恢复到故障点。
• 您希望可以还原单个页。
• 您愿意承担事务日志备份的管理开销。
因此还原单个数据页是完整恢复模式功能。