Files
ai-security-xdr/haobang-security-dm/upgrade-doc/v2/database/README.md
T

83 lines
3.4 KiB
Markdown
Raw Normal View History

# 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. 停止待升级的旧版本服务,避免新旧程序同时运行。
可以先执行下面的语句确认当前用户:
```sql
SELECT USER AS current_user;
```
## 3. 如何执行
可以使用达梦管理工具或现场常用的数据库客户端打开脚本执行。每个脚本应当单独执行,执行完成并核对结果后,再执行下一个脚本。
不要一次选择整个目录中的全部脚本执行,因为预检、升级、验证和历史补数的用途不同。
## 4. 如何判断执行成功
- 预检脚本:SQL 能正常返回,并且结果符合脚本开头写明的预期。
- 升级脚本:所有 DDL 和 DML 均执行成功,没有报错。
- 验证脚本:新增对象都能查到,约束状态为 `ENABLED`,索引状态为 `VALID`。
- 历史补数脚本:必须先查询并确认时间范围,然后才允许执行 `MERGE`。
如果出现“对象已经存在”“列已经存在”之类的错误,不要继续重复执行升级脚本。先运行对应的验证脚本,判断之前是否已经升级成功。
## 5. 推荐执行顺序
全新升级时:
```text
01(检查)→ 02(升级)→ 03(验证)
↓
04(检查)→ 05(升级)→ 06(验证)
```
已经安装过设备 API 拉取基础表,只升级本次新增功能时:
```text
04(检查)→ 05(升级)→ 06(验证)
```
`80`、`90` 和 `91` 不属于正常安装步骤,没有明确需要时不要执行。