优化建议
最后的解决方案是,开启SQL Server 2019的ADR(加快数据库规复)功能,完整备份时候,日志文件只有少量增长,问题解决。
启用 ADR 的步骤
确保利用的是 SQL Server 2019 或 SQL Server 2022,由于 ADR 是从 SQL Server 2019 开始引入的。
--开启数据库的ADR功能
ALTER DATABASE [YourDatabaseName]
SET ACCELERATED_DATABASE_RECOVERY = ON;
GO
--检查 ADR 状态
SELECT name, is_accelerated_database_recovery_on
FROM sys.databases
WHERE name = 'YourDatabaseName';
--关闭 ADR
ALTER DATABASE [YourDatabaseName]
SET ACCELERATED_DATABASE_RECOVERY = OFF;
GO
复制代码
这里有如下几个优化思路:
1、多文件备份:将默认的单文件备份改为多文件备份,可以提升备份效率,缩短备份时间。(之前介绍过SQL Server的一个不显眼的功能备份文件分割)
2、升级SQL Server版本:升级到SQL Server 2019或SQL Server 2022,启用ADR(加快数据库规复)功能,通过SLOG实现日志实时截断。
3、业务拆分:尽管不实际,但从业务上进行拆分也可以减少单一数据库的事务量。
总结
在SQL Server 2019中,一个48TB数据库因备份耗时过长,导致日志文件无法截断并到达上限,拦阻事务写入。
本文介绍了多种解决方案包括多文件分割备份、启用数据库ADR功能。
最终启用数据库ADR功能解决了问题。这里要注意的是,一定要只管利用最新的数据库版本,例如SQL Server 2019或者SQL Server 2022,
保证能利用到最新功能,可以摆脱很多麻烦。