SQL Server-事务日志文件过大的处理方法

概念:

1.虚拟日志

虚拟日志文件是事务日志文件的截断单位,每个事务日志文件都被逻辑地分成称为虚拟日志文件的较小的段,每个虚拟日志文件的最小大小为256KB,每个事务日志文件的最小大小为512KB,可以提供两个256KB大小的虚拟日志文件。虚拟日志文件的数目和大小会随着事务日志文件的大小的增加。小日志文件可以包含较小量的小虚拟日志文件,大日志文件可以有较大的虚拟日志文件。

小虚拟日志文件的数量尽量避免过多,虚拟日志数量的增长比大小的增长要慢得多,如果日志文件以小增量的增长,则会趋向于包含多个小虚拟日志文件,如果日志文件以大增量增长,则sql server会创建较小数量的较大虚拟日志文件。

随着记录不断地写入日志中,日志的结尾会从一个虚拟日志文件增长到下一个虚拟日志文件。如果数据库有一个以上的物理日志文件,随着日志的增长,日志结尾将穿过每个物理文件中的每个虚拟日志文件,直至循环回到第一个物理文件中的第一个虚拟日志文件。只有当所有的日志文件已满时,日志才开始自动增长

场景:

部分DB几个月没有做事务日志备份,事务日志增长到几百GB

解决方案:

  1. Snooze server;
  2. Change db’s recovery model from full to simple(截断事务日志)
  3. Run CHECKPOINT command(write page to disk)
  4. Change db’s recovery model from simple to full
  5. Shrink database’s log files to release space.
  6. Run a full backup job for all dbs(保证数据的完整性)
  7. Run tlog backup job

Note:

截断日志,会造成备份链断开的问题,这时候要考虑数据的完整性,改为full recovery model之后要做一次完整备份,防止数据丢失

原文地址:https://www.cnblogs.com/roseHLF/p/7248847.html