RDS SQL Server如何收缩事务日志

更新时间:2025-03-19 05:38:50
重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

本文针对RDS SQL Server日志空间充足和不足的情况分别提供事务日志收缩方案。

说明

阿里云提醒您:

  • 如果您对实例或数据有修改、变更等风险操作,请务必注意实例的容灾、容错能力,确保数据安全。

  • 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。

  • 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。

日志空间充足

如果日志空间充足,可以通过RDS控制台备份并收缩事务日志功能来处理,系统将自动通过执行日志备份和日志收缩操作来管理和优化事务日志文件的大小。

重要
  • 在进行收缩事务日志操作时,系统会自动执行一次日志备份,目的是为了归档事务日志以便本地日志有更高的概率清理成功。

  • 在进行收缩事务日志操作前,请先检查数据库的日志重用等待状态

    • 状态为NOTHING时,可以尝试进行收缩,但收缩的大小取决于事务日志尾部可重用的VLF大小。如果存在活动事务导致尾部VLF状态无法设置为可重用,可能需要再次进行日志备份,并等待当前活动事务完成后,重新检查重用等待状态,直到状态为NOTHING为止。

    • 状态为LOG_BACKUP时,可能会由于存在活动事务,并不一定收缩成功,收缩操作可能需要多次执行才能成功。

    您可前往数据库管理 > 查看详情页面查看日志文件重用状态(log_reuse_wait_desc)

  1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。

  2. 在左侧导航栏单击备份恢复

  3. 单击备份并收缩事务日志,单击确定

    image.png

  4. 收缩完成后,您可前往RDS实例详情页监控与报警页面,查看最新的日志空间情况。

    image

日志空间不足

如果您的数据库服务器提示“事务日志已满”,此时无法通过控制台收缩事务日志,需要您手动执行SQL语句进行处理。收缩事务日志需要占用部分日志空间,所以当日志处于已满状态时只能按命令截断日志链进行收缩。

使用前须知

  • 以下操作仅适用于紧急状态下进行,一般建议您先扩容磁盘

  • 原则上不建议将数据库恢复模式修改为SIMPLE模式,这会影响RDS的备份链,导致当前时间点之后的所有恢复任务失败。

  • 对于高可用系列实例,需先关闭镜像,再修改数据库恢复模式。

警告

镜像关闭和恢复,以及数据库恢复模式的变更操作均为高危风险操作。如需在紧急情况下执行,表示您已了解并愿意承担上述风险,请谨慎考虑。

操作步骤

基础系列实例
高可用系列实例
-- 设置数据库恢复模式为SIMPLE,数据库日志链会断开
ALTER DATABASE [数据库名] SET RECOVERY SIMPLE;

对于高可用系列实例,涉及数据库镜像,因此直接执行 ALTER DATABASE 操作会被禁止。请按如下方案执行:

-- 先关闭镜像
ALTER DATABASE [数据库名] SET PARTNER OFF;
GO
-- 设置数据库恢复模式为SIMPLE,数据库日志链会断开
ALTER DATABASE [数据库名] SET RECOVERY SIMPLE;

-- 镜像后续会自动恢复,无需您手动设置

系统会将恢复模式重置为FULL,不会实际修改数据库恢复模式为SIMPLE,但数据库日志链会断开,并返回如下报错,此报错不影响日志链的断开效果,忽略即可

Msg 50000, Level 16, State 1, Procedure ******, Line 46
Login User [Test11] can't change database [TestDb] recovery model.
Msg 3609, Level 16, State 2, Line 2
The transaction ended in the trigger. The batch has been aborted.

常见报错

  • Q:执行ALTER DATABASE [TestDb] SET RECOVERY SIMPLE后出现如下类似报错,如何解决?

    消息 1468,级别 16,状态 2,第 1 行
    The operation cannot be performed on database "zhttestdb" because it is involved in a database mirroring session or an availability group. Some operations are not allowed on a database that is participating in a database mirroring session or in an availability group.
    消息 5069,级别 16,状态 1,第 1ALTER DATABASE statement failed.
  • A:高可用系列RDS SQL Server实例涉及数据库镜像,所以ALTER恢复模式操作被禁止。请根据操作步骤处理即可。

相关文档

  • 本页导读 (1)
  • 日志空间充足
  • 日志空间不足
  • 使用前须知
  • 操作步骤
  • 常见报错
  • 相关文档