SpringBoot + 分布式事务日志过大清理:undo_log 表暴涨到 100GB?自动归档策略
问题背景 在使用 Seata 等分布式事务框架时,undo_log 表会存储大量的事务回滚日志,用于在事务失败时进行回滚操作。随着业务量的增长,undo_log 表会不断膨胀,甚至可能达到几十 GB 或上百 GB,导致以下问题: 数据库存储空间不足:undo_log 表占用大量磁盘空间,影响数据库性能 查询性能下降:表数据量大,导致查询速度变慢 备份时间过长:数据库备份时间增加,影响系统维护 恢复时间延长:数据库恢复时间变长,增加系统 downtime 维护成本增加:手动清理日志的成本高,容易出错 核心概念 undo_log 表 undo_log 表是 Seata 等分布式事务框架用于存储事务回滚日志的表,主要包含以下字段: id:主键 branch_id:分支事务 ID xid:全局事务 ID context:上下文信息 rollback_info:回滚信息(二进制数据) log_status:日志状态 log_created:创建时间 log_modified:修改时间 自动归档策略 自动归档策略是指定期将过期的 undo_log 数据归档到历史表或外部存储,以减少主表的数....