SQLSERVER:开启全量日志恢复功能-导致磁盘空间暴涨问题处理

SQLSERVER 2012 
开启了:
ALTER DATABASE [shukuinfo] SET RECOVERY FULL WITH NO_WAIT;

数据库磁盘空间一直在上涨,如何解决?

解决方案:
方案A:生产环境 —— 保留 FULL 模式 + 配置日志备份(推荐)
这是正确做法,既支持时间点恢复,又控制日志大小:
-- 1. 做一次完整备份(如果是首次切 FULL 模式必须先做)
BACKUP DATABASE shukuinfo 
TO DISK = 'D:\Backup\shukuinfo_full.bak'
WITH INIT;

-- 2. 定期(如每 15~30 分钟)做事务日志备份
BACKUP LOG shukuinfo 
TO DISK = 'D:\Backup\shukuinfo_log_20260702.trn';
日志备份后 VLF 可被截断重用,.ldf文件大小通常不再持续增长(内部循环使用)。可在 SQL Agent 中建作业定时执行。


方案B:临时收缩已膨胀的日志文件
如果日志已经涨得很大,可在做完一次日志备份后收缩:
-- 先备份日志(使空间可截断)
BACKUP LOG shukuinfo TO DISK = 'D:\Backup\shukuinfo_log_shrink.trn';


-- 查看日志逻辑文件名
SELECT name, type_desc FROM sys.master_files WHERE database_id = DB_ID('shukuinfo');


-- 收缩日志到目标大小(如 512 MB),替换 YOUR_LOGICAL_LOG_NAME
DBCC SHRINKFILE (EGshop_log, 100000);


方案C:非关键库可改回 SIMPLE(慎用)
如果此库不需要时间点恢复(如内部系统、可重建数据),可切回简单模式:
ALTER DATABASE shukuinfo SET RECOVERY SIMPLE;
-- 切完后同样可 SHRINKFILE 收缩一次


注意:切回 SIMPLE → 再切 FULL 会断开原有的日志链,如需恢复时间点需重新做完整备份开启新备份链。生产关键业务不建议随意切换。
补充说明
数据文件(.mdf/.ndf)增长​ 与恢复模式无关,只和业务数据量有关。
磁盘空间上涨如果主要是 .ldf文件,基本就是上述 FULL 模式无日志备份导致的。
长期运行的大事务(未提交或超大 DELETE/UPDATE)也会暂时阻止日志截断,可用 DBCC OPENTRAN()排查。

分割线
感谢打赏
江西数库信息技术有限公司
YWSOS.COM 平台代运维解决方案
 评论
 发表评论
姓   名:

Powered by AKCMS