SpringBoot + MySQL 自增主键耗尽预警:INT 类型快用完了?提前 30 天告警迁移
一、自增主键耗尽的痛点 上个月,一位做电商的朋友遇到了一个棘手的问题:他们的订单表突然无法插入新数据,报错 "Duplicate entry '2147483647' for key 'PRIMARY'"。 "我们的订单表用的是 INT 类型的自增主键,"朋友无奈地说,"现在已经达到了 INT 的最大值 2147483647,无法再插入新订单了。" 我帮他检查了一下数据库,发现问题确实如此: 订单表的主键是 id INT AUTO_INCREMENT 当前最大 ID 已经接近 2147483647 系统每天新增约 10 万条订单 按照这个速度,最多只能再支撑 20 天左右 更糟糕的是,他们之前完全没有意识到这个问题,直到系统崩溃才发现。这种情况下,数据迁移和表结构修改的风险非常高,可能会导致服务中断和数据丢失。 二、传统方案的局限性 为了避免自增主键耗尽的问题,我们通常会使用以下方案: 1. 定期手动检查 -- 检查当前最大 ID 和使用百分比 SELECT TABLE_NAME, AUTO_INCREMENT, (AUTO_INCREMENT / POW(2, 31)) * 10....