feat(upgrade): 增加 升级脚本和部署说明

- 新增达梦数据库结构、幂等索引、统计基线及校验脚本
- 新增 Docker Kafka Retry、DLT、Replay Topic 升级脚本
- 更新生产 Compose,启用 DIRECT 并关闭旧增量捕获和投影
- 补充数据库、Kafka、应用启动及验证说明
- 增加日志和本地生成文件忽略规则
This commit is contained in:
王绍宏
2026-08-24 15:09:36 +08:00
parent 29445c6825
commit f53661931f
15 changed files with 694 additions and 38 deletions
@@ -0,0 +1,73 @@
-- 将 BUSINESS_DATE、YYYYMMDD 替换为升级当天后执行。
-- 结果要求见每段注释;不符合时不要启动全部业务实例。
-- 1. 应返回 10 行。
SELECT table_name
FROM user_tables
WHERE table_name IN (
'SYSLOG_FAILURE_RECORD','SYSLOG_REPLAY_BATCH','SYSLOG_REPLAY_ITEM',
'ANALYSIS_CHECKPOINT','DEVICE_DAILY_STATS','NORMALIZE_RULE_DAILY_STATS',
'DEVICE_COLLECT_STATS','DEVICE_DAILY_STATS_DIRECT_SHADOW',
'NORMALIZE_RULE_DAILY_STATS_DIRECT_SHADOW','STATS_DIRECT_CONTROL'
)
ORDER BY table_name;
-- 2. POINT_TIME_NS 必须存在;其余升级字段也应全部列出。
SELECT table_name,column_name
FROM user_tab_columns
WHERE (table_name='SYSLOG_FAILURE_RECORD' AND column_name='POINT_TIME_NS')
OR (table_name IN ('SYSLOG_NORMAL_DATA','SYSLOG_NORMAL_ALARM') AND column_name='RULE_VERSION')
OR (table_name='ALARM' AND column_name IN ('RULE_ID','RULE_VERSION','WINDOW_START','GROUP_KEY_HASH'))
OR (table_name='ALARM_VISIT' AND column_name IN ('ALGORITHM_ID','ALGORITHM_VERSION','EVENT_ID','RESULT_TYPE'))
OR (table_name='DEVICE_DEVICE' AND column_name='TODAY_STATS_DATE')
ORDER BY table_name,column_name;
-- 3. 应返回 4 行且全部为 UNIQUE、VALID;前两个 PARTITIONED=YES,后两个为 NO。
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 index_name;
-- 4. 三个物理事实表及三张统计表行数,用于现场留档。
SELECT 'SYSLOG_NORMAL_DATA_P_YYYYMMDD' AS item,COUNT(*) AS row_count
FROM syslog_normal_data_p_YYYYMMDD
UNION ALL
SELECT 'SYSLOG_NORMAL_ALARM_P_YYYYMMDD',COUNT(*)
FROM syslog_normal_alarm_p_YYYYMMDD
UNION ALL
SELECT 'SYSLOG_NON_NORMAL_MESSAGE_P_YYYYMMDD',COUNT(*)
FROM syslog_non_normal_message_p_YYYYMMDD
UNION ALL
SELECT 'DEVICE_DAILY_STATS',COUNT(*)
FROM device_daily_stats
WHERE stat_date=TO_DATE('BUSINESS_DATE','YYYY-MM-DD')
UNION ALL
SELECT 'NORMALIZE_RULE_DAILY_STATS',COUNT(*)
FROM normalize_rule_daily_stats
WHERE stat_date=TO_DATE('BUSINESS_DATE','YYYY-MM-DD')
UNION ALL
SELECT 'DEVICE_COLLECT_STATS',COUNT(*)
FROM device_collect_stats;
-- 5. 必须返回 SYSLOG_STATS / 0。
SELECT control_name,rebuild_required,updated_at
FROM stats_direct_control
WHERE control_name='SYSLOG_STATS';
-- 6. 以下两个查询都必须返回 0 行。
SELECT d.id
FROM device_device d
LEFT JOIN device_daily_stats s
ON s.device_id=d.id
AND s.stat_date=TO_DATE('BUSINESS_DATE','YYYY-MM-DD')
WHERE d.today_stats_date IS NULL
OR d.today_stats_date<>TO_DATE('BUSINESS_DATE','YYYY-MM-DD')
OR COALESCE(d.today_parse_count,0)<>COALESCE(s.parse_count,0)
OR COALESCE(d.today_non_log_count,0)<>COALESCE(s.non_log_count,0);
SELECT control_name
FROM stats_direct_control
WHERE control_name='SYSLOG_STATS' AND rebuild_required<>0;