Files
ai-security-xdr/haobang-security-dm/upgrade-doc/v3/database/02-stats-async-projection-upgrade.sql
T
王绍宏 0e9e6656db feat(syslog): 优化大日志通道并增加异常连续消费兜底
- 128 KiB 及以上日志默认进入大日志 Topic
- InfluxDB 原文及达梦大字段超过 256 KiB 时截断保存
- 截断内容追加 HB_XDR_TRUNCATED 标记
- InfluxDB 写入失败时继续执行规则解析和达梦写入
- 未知或系统性异常优先写入普通/大日志 DLT
- DLT 写入失败时记录特殊告警并提交 offset,避免阻塞后续消息
- DLT 失败等待时间默认限制为 1 秒
- 增加连续性放行、DLT 成功及失败监控指标
- 更新 Docker Compose、v3 升级文档及相关测试
2026-09-12 19:22:52 +08:00

42 lines
1.6 KiB
SQL

-- v3 达梦升级:为事实事务外的可靠日统计投影建立 Outbox 和消费幂等表。
-- 仅在 01 预检通过后执行一次;不要重复执行。
CREATE TABLE stats_projection_outbox (
event_id VARCHAR2(64) NOT NULL,
event_schema VARCHAR2(64) NOT NULL,
payload CLOB NOT NULL,
status VARCHAR2(16) DEFAULT 'PENDING' NOT NULL,
attempt_count INT DEFAULT 0 NOT NULL,
next_attempt_at TIMESTAMP DEFAULT SYSDATE,
published_at TIMESTAMP,
applied_at TIMESTAMP,
last_error VARCHAR2(2000),
created_at TIMESTAMP DEFAULT SYSDATE NOT NULL,
updated_at TIMESTAMP DEFAULT SYSDATE NOT NULL,
CONSTRAINT pk_stats_projection_outbox PRIMARY KEY(event_id),
CONSTRAINT ck_stats_projection_outbox_status
CHECK(status IN ('PENDING','FAILED','PUBLISHED','APPLIED'))
);
CREATE INDEX idx_stats_projection_outbox_due
ON stats_projection_outbox(status,next_attempt_at,created_at);
CREATE TABLE stats_projection_applied_event (
event_id VARCHAR2(64) NOT NULL,
event_schema VARCHAR2(64) NOT NULL,
applied_at TIMESTAMP DEFAULT SYSDATE NOT NULL,
CONSTRAINT pk_stats_projection_applied PRIMARY KEY(event_id)
);
CREATE INDEX idx_stats_projection_applied_time
ON stats_projection_applied_event(applied_at);
COMMENT ON TABLE stats_projection_outbox IS
'事实批次统计 Outbox;Kafka 发布或消费失败时可持续恢复';
COMMENT ON COLUMN stats_projection_outbox.status IS
'PENDING/FAILED/PUBLISHED/APPLIED;只有 APPLIED 才允许到期清理';
COMMENT ON TABLE stats_projection_applied_event IS
'统计投影消费幂等标记;保留时间必须长于 STATS.PROJECTION Topic';
COMMIT;