feat(upgrade): 增加 升级脚本和部署说明
- 新增达梦数据库结构、幂等索引、统计基线及校验脚本 - 新增 Docker Kafka Retry、DLT、Replay Topic 升级脚本 - 更新生产 Compose,启用 DIRECT 并关闭旧增量捕获和投影 - 补充数据库、Kafka、应用启动及验证说明 - 增加日志和本地生成文件忽略规则
This commit is contained in:
@@ -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;
|
||||
Reference in New Issue
Block a user