feat: S0 主键改雪花(DDL 去 identity + 实体 ASSIGN_ID + 雪花配置)

为什么:自增主键把 ID 分配锁在单库序列上,分库分表时无法横向扩展。趁线上业务数据
近零(只有系统种子表有量)先改,代价最低。

- sql/schema.sql、sql/schema-phase1.sql、sql/partition-maintenance.sql:61 处
  GENERATED BY DEFAULT AS IDENTITY 去掉,主键改 BIGINT 无默认值
- 52 个实体 @TableId IdType.AUTO -> IdType.ASSIGN_ID;两个入口 id-type: assign_id,
  并加 global-config.sequence.worker-id/datacenter-id(单机固定值,多实例需按实例分配)
- 新增 sql/migrate-s0-snowflake.sql:存量库幂等迁移,走 DROP IDENTITY 保留数据,不重建表
- 实测:三份建表脚本在新库连跑两遍幂等;线上 57 张表 identity 归零;
  watch_history/playback_ticket/order_event 的主键与唯一索引仍含分区键
This commit is contained in:
Vicky committed 2026-10-16 09:00:38 +08:00
1 parent 6833e01e1f
commit 37c9a141d3
58 files changed
+174 -115

No files matched your search

@@ -14,7 +14,7 @@ import java.time.LocalDateTime;
@TableName("sys_admin_user")
public class AdminUser {
@TableId(type = IdType.AUTO)
@TableId(type = IdType.ASSIGN_ID)
private Long id;
private String username;
private String password;
@@ -13,7 +13,7 @@ import lombok.NoArgsConstructor;
@TableName("sys_admin_user_role")
public class AdminUserRole {
@TableId(type = IdType.AUTO)
@TableId(type = IdType.ASSIGN_ID)
private Long id;
private Long userId;
private Long roleId;
@@ -17,7 +17,7 @@ import java.time.LocalDateTime;
@TableName("audit_log")
public class AuditLog {
@TableId(type = IdType.AUTO)
@TableId(type = IdType.ASSIGN_ID)
private Long id;
/** ORDER / ENTITLEMENT / USER / CREATOR / PRICE */
private String bizType;
@@ -13,7 +13,7 @@ import java.time.LocalDateTime;
@TableName("sys_menu")
public class Menu {
@TableId(type = IdType.AUTO)
@TableId(type = IdType.ASSIGN_ID)
private Long id;
private Long parentId;
private String title;
@@ -11,7 +11,7 @@ import java.time.LocalDateTime;
@TableName("sys_operation_log")
public class OperationLog {
@TableId(type = IdType.AUTO)
@TableId(type = IdType.ASSIGN_ID)
private Long id;
private Long adminUserId;
private String username;
@@ -9,7 +9,7 @@ import lombok.Data;
@TableName("sys_permission")
public class Permission {
@TableId(type = IdType.AUTO)
@TableId(type = IdType.ASSIGN_ID)
private Long id;
private String code;
private String name;
@@ -14,7 +14,7 @@ import java.time.LocalDateTime;
@TableName("sys_role")
public class Role {
@TableId(type = IdType.AUTO)
@TableId(type = IdType.ASSIGN_ID)
private Long id;
private String name;
private String code;
@@ -14,7 +14,7 @@ import java.time.LocalDateTime;
@TableName("sys_role_category")
public class RoleCategory {
@TableId(type = IdType.AUTO)
@TableId(type = IdType.ASSIGN_ID)
private Long id;
private String name;
private String description;
@@ -13,7 +13,7 @@ import lombok.NoArgsConstructor;
@TableName("sys_role_menu")
public class RoleMenu {
@TableId(type = IdType.AUTO)
@TableId(type = IdType.ASSIGN_ID)
private Long id;
private Long roleId;
private Long menuId;
@@ -13,7 +13,7 @@ import lombok.NoArgsConstructor;
@TableName("sys_role_permission")
public class RolePermission {
@TableId(type = IdType.AUTO)
@TableId(type = IdType.ASSIGN_ID)
private Long id;
private Long roleId;
private Long permissionId;
@@ -9,7 +9,7 @@ import lombok.Data;
@TableName("sys_config")
public class SysConfig {
@TableId(type = IdType.AUTO)
@TableId(type = IdType.ASSIGN_ID)
private Long id;
private String configKey;
private String configValue;