Files
ai-security-xdr/haobang-security-dm/upgrade-doc/v2/database/README.md
T
王绍宏 00c0a1fb7f feat: 新增设备 API 拉取采集及配套处理能力
- 接入 NDRServer 告警和流量日志,支持凭据与任务管理
- 支持分页拉取、窗口拆分、调度优先级及 WAL 持久化后推进断点
- 增加迟到告警规则重放,优化多条泛化规则选择和事件时间处理
- 补充回归测试、数据库升级脚本及部署文档
2026-09-06 16:46:21 +08:00

3.4 KiB

v2 数据库升级说明

本目录中的脚本供达梦数据库管理员手工执行。请使用 syslog-serve 实际连接的数据库用户执行,不要使用其他业务库或其他 Schema。

1. 脚本分组

第一组:设备 API 拉取基础表

首次安装设备 API 拉取功能时,依次执行:

  1. 01-device-api-pull-precheck.sql:检查旧表主键和新表是否已经存在,只读。
  2. 02-device-api-pull-upgrade.sql:创建凭据、任务配置、进度和运行记录表,会修改数据库。
  3. 03-device-api-pull-verify.sql:检查新表、约束、索引和字段,只读。

如果四张 DEVICE_COLLECT_API_* 表已经存在,不要再次执行 02。

第二组:公平调度和迟到告警重放

升级公平调度及迟到告警处理功能时,依次执行:

  1. 04-fairness-late-replay-precheck.sql:检查升级前结构,只读。
  2. 05-fairness-late-replay-upgrade.sql:增加调度优先级,并创建迟到告警处理表,会修改数据库。
  3. 06-fairness-late-replay-verify.sql:检查新增字段、表、约束和索引,只读。

如果 SCHEDULER_PRIORITY 字段和两张 ANALYSIS_* 表已经存在,不要再次执行 05。

辅助脚本

脚本 用途 是否修改数据
80-late-replay-backfill-template.sql 为升级前已经入库的历史告警补建重放任务 是,必须先替换参数
90-device-api-pull-rollback-audit.sql 回退应用前检查 API 拉取数据 否
91-fairness-late-replay-rollback-audit.sql 回退应用前检查调度和重放状态 否

2. 执行前准备

执行修改数据库的脚本前,先完成以下事项:

  1. 确认已经完成数据库备份。
  2. 确认连接的是正确的测试环境或生产环境。
  3. 确认当前用户可以创建表、索引、约束以及修改表结构。
  4. 暂停所有 API 拉取任务,避免升级过程中还有任务写入。
  5. 停止待升级的旧版本服务,避免新旧程序同时运行。

可以先执行下面的语句确认当前用户:

SELECT USER AS current_user;

3. 如何执行

可以使用达梦管理工具或现场常用的数据库客户端打开脚本执行。每个脚本应当单独执行,执行完成并核对结果后,再执行下一个脚本。

不要一次选择整个目录中的全部脚本执行,因为预检、升级、验证和历史补数的用途不同。

4. 如何判断执行成功

  • 预检脚本:SQL 能正常返回,并且结果符合脚本开头写明的预期。
  • 升级脚本:所有 DDL 和 DML 均执行成功,没有报错。
  • 验证脚本:新增对象都能查到,约束状态为 ENABLED,索引状态为 VALID。
  • 历史补数脚本:必须先查询并确认时间范围,然后才允许执行 MERGE。

如果出现“对象已经存在”“列已经存在”之类的错误,不要继续重复执行升级脚本。先运行对应的验证脚本,判断之前是否已经升级成功。

5. 推荐执行顺序

全新升级时:

01(检查)→ 02(升级)→ 03(验证)
                       ↓
04(检查)→ 05(升级)→ 06(验证)

已经安装过设备 API 拉取基础表,只升级本次新增功能时:

04(检查)→ 05(升级)→ 06(验证)

80、90 和 91 不属于正常安装步骤,没有明确需要时不要执行。