彻底搞懂SQL Server数据库恢复模式及日志增长问题-1
|
admin
2026年1月18日 20:44
本文热度 33
|
经常对SQL数据进行维护的工程师都知道,SQL数据库针对特定的使用场景提供三种恢复模式:简单、完整、大容量日志。而且创建的数据库的时候,默认恢复模式就是完整,这也是我们平时使用最多的一种,另一种就是简单。这三种恢复模式,在我们平时使用数据库的过程中,其实感受都不是特别明显。大概只有两种情况下,我们会去关注SQL数据库的恢复模式:1.当数据库空间不够,发现数据库日志文件越来越大。2.当数据库出现故障,需要对数据库进行数据恢复操作。在我们平时数据库运维过程中,为什么有的SQL数据库用的时间久、数据文件很大,反而日志文件一直很小;而有的SQL数据运行的时间很短、数据量也不大,但是日志文件却有几百GB或上TB了?在简单恢复模式下,事务日志会在检查点(即脏数据被写入到数据文件)之后自动截断,日志被截断后,日志文件可重写,只要数据库不是在瞬间产生大量的增、删、改操作,日志就不会爆炸式增长,所以日志文件也一般会在固定大小或者少量的增加。在完整恢复模式或大容量日志恢复模式下,事务日志的截断通常在事务日志备份之后进行。也就是说,在完整模式下,如果不进行日志备份,日志文件就会一直增长,直到磁盘空间被占满。那如果对SQL数据库做了完整备份而没有日志备份,日志是否会被截断了?答案是否定的,根据微软官方文档解释,完整备份只是会备份部分事物日志,以便在恢复完整备份时能恢复完整的数据库,而不会截断事物日志,但是完整备份又是事物日志备份的前提,备份日志之前必须要有至少一个完整备份。(https://learn.microsoft.com/zh-cn/sql/relational-databases/backup-restore/full-database-backups-sql-server?view=sql-server-ver17)那既然完整恢复模式这么麻烦,为什么我们不直接用简单恢复模式,让数据库自动截断日志就好了?这里就涉及到我们上面提到的,什么时候会关注SQL数据库恢复模式的第二点了:当数据库出现故障,需要对数据库进行数据恢复操作。如果你的数据库用的是完整恢复模式,去看看有没有定期做事物日志备份吧,看看日志文件和磁盘空间占用情况!
阅读原文:原文链接
该文章在 2026/1/19 10:49:43 编辑过