数据库SqlServer日志备份和恢复

2022-05-31 00:00:00 文件 备份 日志 截断 恢复

大家在工作中可能会遇到这样的场景:

壁橱里的小王:哎呀!存放数据库的磁盘满了/为什么数据文件才100M,日志文件已经暴涨到了200G/数据库插入操作hang住了!!! 大佬,怎么肥四?

隔壁老王:日志太大,快做日志收缩。

壁橱里的小王:老王,我做了啊,但是日志没有变小啊。

隔壁老王:哦,那你做了日志截断吗?

壁橱里的小王:。。。。啥意思


如果大家也和壁橱里的小王一样,一脸懵逼,截断&收缩傻傻分不清楚,那么,请往下看吧。

目录

一 日志

二 日志备份

三 日志还原

四 常用工具

五 工作中苦逼的例子

一 日志

1 日志备份的意义:

  • 为防止数据损坏而提供的保障。
  • 数据归档
  • 数据迁移

2 日志的本质 —— VLF

一个数据库可以有多个日志文件,但是,逻辑上他们可以看成一个。

SQL对日志文件的管理,是将逻辑上的这一个ldf,分成多个逻辑上的虚拟日志文件(virtual log files,简称VLF)

日志以整个VLF作为单位进行增长和收缩,所以

——日志文件是顺序读取,不像data page并行访问,所以日志文件分成多个不会有性能上的提升。

3 VLF状态

活动: 日志活动部分(未commit的活动事务)——只要VLF中包含了活动日志,就认 为是活动VLF。            
可恢复: 老LSN之前的日志 作用就是保存之前记录,以帮助回滚恢复到之前的某一状态——还未截断
可复用:老LSN之前的日志没用了,就可以复用了。——已经截断(truncated)
未用:VLF还未被使用复制代码

如何理解呢?请看下图:

这是一个物理日志文件,有8个VLF。使用顺序看FSeqNo。

状态status——2:VLF活动或可恢复 。 0:VLF可复用or完全没使用过

截断(truncated)——只是将可恢复状态的VLF转换到可重用状态

相关文章