你的位置:首页 > 软件开发 > 数据库 > SQL Server中的事务日志管理(5/9):完整恢复模式里的日志管理

SQL Server中的事务日志管理(5/9):完整恢复模式里的日志管理

发布时间:2015-10-26 10:00:04
当一切正常时,没有必要特别留意什么是事务日志,它是如何工作的。你只要确保每个数据库都有正确的备份。当出现问题时,事务日志的理解对于采取修正操作是重要的,尤其在需要紧急恢复数据库到指定点时。这系列文章会告诉你每个DBA应该知道的具体细节。在这篇文章里,我们会回顾下当运行在完整恢复模 ...

SQL Server中的事务日志管理(5/9):完整恢复模式里的日志管理

当一切正常时,没有必要特别留意什么是事务日志,它是如何工作的。你只要确保每个数据库都有正确的备份。当出现问题时,事务日志的理解对于采取修正操作是重要的,尤其在需要紧急恢复数据库到指定点时。这系列文章会告诉你每个DBA应该知道的具体细节。


在这篇文章里,我们会回顾下当运行在完整恢复模式时,为什么和如何进行日志备份,还有如何使用这些日志备份文件和完整数据库备份一起,进行数据库恢复。完整恢复模式支持数据库数据库还原到有效日志备份里的任何时间点,在尾日志已经备份的情况下,直到上一个提交事务的时间,在灾难发生前。

什么被记录?

在完整恢复模式里,所有操作被完整记录。对于INSERT,UPDATE和DELETE操作,这意味着对于修改的每一行,都有日志记录描述执行语句的事务ID,事务何时开始,何时结束,哪一页被修改,做出的数据改变等等。

当运行在完整恢复模式时,操作会被最小化记录,SELECT INTO,BULK INSERT和CREATE INDEX还是会完全记录,但有完成方法有一点区别。这些操作影响的行不是各自记录,只有数据页被记录,因为它们被填充。这会减少这类操作的日志负荷,但还是会保证存在需要同样的信息来进行回滚,重做和恢复到时间点。Kalen Delaney已经发布了对于SELECT INTO 和索引重建操作日志插入的一些研究,包括在完整和大容量日志恢复模式。当运行在大容量日志模式里时,最小化日志操作的日志区别,会在第6篇——大容量恢复模式里的日志管理里详细讨论。

为什么备份事务日志?

在完整恢复模式里,只有日志备份会引起日志截断。这样的话,自上次事务日志备份起,事务日志会保存事务运行的全部和完整记录。很多新手或业余DBA会在他们的数据库上进行完整备份,但他们不进行事务日志备份。这样的话,事务日志不会截断,不停的增长增长直到用完磁盘空间,导致SQL Server停止工作。

一旦日志备份发生,日志截断就会发生,例如自上一个备份后,且没有其他因素(例如数据备份或还原操作)延迟截断,有个检查点已发生。对于会延迟可恢复VLFs截断的完整列表,同样保持否则不需要的活动日志的大片,例如淘气的,长时间运行不提交的事务或数据库镜像或复制过程,点击查看可能引起日志截断的因素。

事务日志的复制备份

事务日志的复制备份不会截断事务日志。日志复制备份“单独”存在于普通日志备份计划里,它不会中断日志备份链。

简单来说,进行事务日志备份有2个目的:可以恢复或还原到先前一个时间点,还有控制事务日志的大小。最常见事务相关引起的问题是运行在完整恢复模式里,绝不做日志备份,或进行日志备份的频率不够控制事务日志文件的大小。

如果你不确定是否要对一个数据库进行事务日志备份,你可以简单查询下MSDB数据库里的backupset表,使用如下的查询:

1 SE msdb ;2 SELECT  backup_set_id ,3      backup_start_date ,4      backup_finish_date ,5      backup_size ,6      recovery_model ,7     [type]8 FROM   dbo.backupset9 WHERE  database_name = 'TestDB'

原标题:SQL Server中的事务日志管理(5/9):完整恢复模式里的日志管理

关键词:sql

sql
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。