SQL Server-事务日志文件过大的处理方法
概念:
1.虚拟日志
虚拟日志文件是事务日志文件的截断单位,每个事务日志文件都被逻辑地分成称为虚拟日志文件的较小的段,每个虚拟日志文件的最小大小为256KB,每个事务日志文件的最小大小为512KB,可以提供两个256KB大小的虚拟日志文件。虚拟日志文件的数目和大小会随着事务日志文件的大小的增加。小日志文件可以包含较小量的小虚拟日志文件,大日志文件可以有较大的虚拟日志文件。
小虚拟日志文件的数量尽量避免过多,虚拟日志数量的增长比大小的增长要慢得多,如果日志文件以小增量的增长,则会趋向于包含多个小虚拟日志文件,如果日志文件以大增量增长,则sql server会创建较小数量的较大虚拟日志文件。
随着记录不断地写入日志中,日志的结尾会从一个虚拟日志文件增长到下一个虚拟日志文件。如果数据库有一个以上的物理日志文件,随着日志的增长,日志结尾将穿过每个物理文件中的每个虚拟日志文件,直至循环回到第一个物理文件中的第一个虚拟日志文件。只有当所有的日志文件已满时,日志才开始自动增长
场景:
部分DB几个月没有做事务日志备份,事务日志增长到几百GB
解决方案:
- Snooze server;
- Change db’s recovery model from full to simple(截断事务日志)
- Run CHECKPOINT command(write page to disk)
- Change db’s recovery model from simple to full
- Shrink database’s log files to release space.
- Run a full backup job for all dbs(保证数据的完整性)
- Run tlog backup job
Note:
截断日志,会造成备份链断开的问题,这时候要考虑数据的完整性,改为full recovery model之后要做一次完整备份,防止数据丢失