Files
王绍宏 f53661931f feat(upgrade): 增加 升级脚本和部署说明
- 新增达梦数据库结构、幂等索引、统计基线及校验脚本
- 新增 Docker Kafka Retry、DLT、Replay Topic 升级脚本
- 更新生产 Compose,启用 DIRECT 并关闭旧增量捕获和投影
- 补充数据库、Kafka、应用启动及验证说明
- 增加日志和本地生成文件忽略规则
2026-08-24 15:09:36 +08:00

36 lines
1.8 KiB
SQL

-- haobang-security-dm 幂等索引升级。
-- 前置:01-schema-upgrade.sql 成功,所有相关旧应用仍保持停止,DBA 已评估索引空间和维护窗口。
-- 任一 CREATE 报错立即停止;禁止通过删除历史数据绕过重复问题。
-- 两张标准化表现场均按 LOG_TIME 做 RANGE 分区。
-- 当前 DM8 现场语法在不指定 GLOBAL 时建立分区索引;唯一键包含完整分区键,因此形成本地唯一索引。
-- 新版 id 是 event_id + normalize_rule_id + rule_version 的确定性 UUID,长度仍为 36 字符。
CREATE UNIQUE INDEX uk_normal_data_log_id
ON syslog_normal_data(log_time,id);
CREATE UNIQUE INDEX uk_normal_alarm_log_id
ON syslog_normal_alarm(log_time,id);
-- 规则聚合窗口和算法单事件结果需要跨日幂等,使用全局非分区唯一索引。
-- 历史新增字段保持 NULL,索引只保护新版本写入且幂等字段完整的数据。
CREATE UNIQUE INDEX uk_alarm_rule_window_group
ON alarm(rule_id,rule_version,window_start,group_key_hash) GLOBAL;
CREATE UNIQUE INDEX uk_alarm_visit_algorithm_event
ON alarm_visit(algorithm_id,algorithm_version,event_id,result_type) GLOBAL;
-- 结果门禁:前两个必须 UNIQUE/PARTITIONED=YES/VALID;后两个必须 UNIQUE/PARTITIONED=NO/VALID。
SELECT index_name,table_name,uniqueness,partitioned,status
FROM user_indexes
WHERE index_name IN (
'UK_NORMAL_DATA_LOG_ID','UK_NORMAL_ALARM_LOG_ID',
'UK_ALARM_RULE_WINDOW_GROUP','UK_ALARM_VISIT_ALGORITHM_EVENT'
)
ORDER BY table_name,index_name;
-- 旧全局宽字符串索引不属于目标结构。若现场已存在,立即停止并单独评审,禁止在本文件中自动 DROP。
SELECT index_name,table_name,uniqueness,partitioned,status
FROM user_indexes
WHERE index_name IN ('UK_NORMAL_DATA_EVENT_RULE','UK_NORMAL_ALARM_EVENT_RULE')
ORDER BY table_name,index_name;