数据库恢复和日志文件阐述

时间:2022-05-20 21:43:18
  • 恢复模式简述如下:
    • 简单恢复模式:可以理解为在这种模式下Sql Server不记录日志(并不是真的不记录任何日志)。在这种模式下Sql Server会截断非活动日志,并且无法备份日志也不允许备份日志。因此在这种恢复模式下就不可能任意的将数据库还原到某个时间点了。只能做完全备份、增量备份来备份某个时刻的数据。
    • 完全恢复模式:在完全恢复模式下,必须要有一个完全备份和一系列的日志备份来进行时点还原,要不然就失去完全恢复模式的意义了。
    • 大批量恢复模式:和完全模式基本相同,但是优化了部分大批量操作的日志记录,但是需要在做备份时付出相应的代价,在这里不做讨论。
  • 数据库的日志文件会记录所有的事务日志,但是如果在简单恢复模式下,或者不在简单恢复模式下但是没有对数据库做过完全备份,那么Sql Server不会长久的保存日志,Sql Server会对日志进行截断,也就是说丢弃以前的日志记录,但是会保留活动日志。
  • 在完全恢复模式下,如果没有进行过完整备份并且数据库的日志空间使用率高于70%,那么Sql Server只要要可能就会进行日志截断。
  • Sql Server的日志会被划分为一些虚拟日志,当一个虚拟日志使用完后再使用下一个虚拟日志。Sql Server在截断日志时会以虚拟日志为单位来进行截断,被截断的日志可以被重新使用。但是截断日志不会减少日志的物理空间,只会把已满的虚拟日志重新标记为可用状态。
  • 在完整恢复模式(已做过完全备份)下,如果不进行任何日志备份,那么日志文件会一直增长,Sql Server不会去主动截断日志。我们可以定期备份日志,从而让日志空间得以重复里面,避免日志增长过大。

在简单恢复模式下,虽然不记录事务日志(但是并不是真的不记录任何日志),如果日志空间够用,由于日志截断,会重复利用截断的空间,只有不够用的情况下,会再分配空间,造成日志文件增长。