docs(db): 记录数据库V2 Stage1备份验证结果

This commit is contained in:
wangzhibiao committed 2026-09-14 02:32:14 +08:00
1 parent e08535a732
commit e54c814a33
1 file changed
+107
@@ -0,0 +1,107 @@
# RailwaySystem 数据库 V2 Stage 1 备份阶段验证报告
本文档记录 RailwaySystem 数据库 V2 迁移 **Stage 1 (001_backup_current_schema.sql)** 在真实 KingbaseES 数据库环境中的执行与核验结果。
---
## 一、执行环境与基本参数
| 配置项 | 参数值 | 状态 |
| :--- | :--- | :--- |
| **执行时间** | 2026-09-14 02:30:18 CST | 已完成 |
| **数据库版本** | KingbaseES V009R003C018 | 正常 |
| **数据库实例** | `training` | 确认 |
| **当前 Schema** | `public` | 确认 |
| **会话 search_path** | `public, sys_catalog` | 确认 |
| **数据库模式** | `database_mode = mysql` | 确认 |
| **JDBC 驱动** | `com.kingbase8:kingbase8:8.6.0` (preferQueryMode=simple) | 官方原生驱动 |
| **执行脚本** | `RuoYi-Vue/sql/train/v2/001_backup_current_schema.sql` | 完整执行 |
| **事务状态** | `BEGIN ... COMMIT` | 完整提交 (COMMIT) |
> [!IMPORTANT]
> **操作防重约束说明**:
> `001_backup_current_schema.sql` 已成功执行并提交。当前数据库已存在完整的 14 张 `bak_v1_*` 快照。根据脚本内建的强防重机制,除非数据库先完整回滚至 Phase 0.5 并清理当前备份状态,否则严禁再次执行 001 脚本,杜绝覆盖原始历史快照。
---
## 二、Stage 1 执行前置校验结果
在执行 001 之前,执行器执行了前置安全核验:
1. **既有备份表检查**: `SELECT count(*) FROM information_schema.tables WHERE table_schema = 'public' AND table_name LIKE 'bak_v1_%'` 计数为 **0**,无既有备份表。
2. **基线数据行数检查**: `train_teacher` 精确为 **1** 行;其余 13 张旧业务表全部精确为 **0** 行。
3. **核验判定**: 执行前检查全部通过,允许进入事务执行备份。
---
## 三、Stage 1 备份表生成与数据核验矩阵
### 3.1 备份表总数与完整清单
- **备份表总数**: 精确 **14** 张(期望 14 张,无多余、无缺失)。
- **14 张备份表完整字典序清单**:
1. `bak_v1_train_class_plan`
2. `bak_v1_train_class_report`
3. `bak_v1_train_classroom_info`
4. `bak_v1_train_course`
5. `bak_v1_train_dorm_auth`
6. `bak_v1_train_dormitory_info`
7. `bak_v1_train_electronic_board`
8. `bak_v1_train_score_info`
9. `bak_v1_train_student`
10. `bak_v1_train_student_checkin`
11. `bak_v1_train_student_portrait`
12. `bak_v1_train_study_duration`
13. `bak_v1_train_teacher`
14. `bak_v1_train_training_site`
### 3.2 数据行数对照表
| 表名 (原表 / 备份表) | 原表行数 | 备份表行数 | 数据核验结论 |
| :--- | :--- | :--- | :--- |
| `train_teacher` / `bak_v1_train_teacher` | **1** | **1** | **PASS (真实教师数据安全封存)** |
| `train_student` / `bak_v1_train_student` | 0 | 0 | **PASS** |
| `train_course` / `bak_v1_train_course` | 0 | 0 | **PASS** |
| `train_class_plan` / `bak_v1_train_class_plan` | 0 | 0 | **PASS** |
| `train_dormitory_info` / `bak_v1_train_dormitory_info` | 0 | 0 | **PASS** |
| `train_dorm_auth` / `bak_v1_train_dorm_auth` | 0 | 0 | **PASS** |
| `train_classroom_info` / `bak_v1_train_classroom_info` | 0 | 0 | **PASS** |
| `train_training_site` / `bak_v1_train_training_site` | 0 | 0 | **PASS** |
| `train_class_report` / `bak_v1_train_class_report` | 0 | 0 | **PASS** |
| `train_electronic_board` / `bak_v1_train_electronic_board` | 0 | 0 | **PASS** |
| `train_student_checkin` / `bak_v1_train_student_checkin` | 0 | 0 | **PASS** |
| `train_score_info` / `bak_v1_train_score_info` | 0 | 0 | **PASS** |
| `train_study_duration` / `bak_v1_train_study_duration` | 0 | 0 | **PASS** |
| `train_student_portrait` / `bak_v1_train_student_portrait` | 0 | 0 | **PASS** |
*(注:本报告严格遵循数据安全与脱敏规范,绝不记录教师姓名、身份证、联系方式等任何敏感个人信息)*
---
## 四、未受影响对象与系统底座基线核验
### 4.1 V2 新增 8 表隔离检查
在 Stage 1 完成后,8 张 V2 新建业务表依然全部不存在(count = 0),未提前创建:
- `train_resource`: 不存在 (PASS)
- `train_course_resource`: 不存在 (PASS)
- `train_plan_course`: 不存在 (PASS)
- `train_enrollment`: 不存在 (PASS)
- `train_lesson`: 不存在 (PASS)
- `train_accommodation`: 不存在 (PASS)
- `train_score_item`: 不存在 (PASS)
- `train_student_score`: 不存在 (PASS)
### 4.2 若依系统底座表 (sys_*) 基线核验
系统基础表在整个备份过程中零受损、零改动:
- `sys_user`: 1 行 (期望 1)
- `sys_menu`: 106 行 (期望 106)
- `sys_dept`: 15 行 (期望 15)
- `sys_dict_type`: 44 行 (期望 44)
- `sys_dict_data`: 500 行 (期望 500)
---
## 五、Stage 1 阶段性结论
- **001 执行状态**: 成功完成并 COMMIT,脚本内部校验块通过,输出:
`[001-PASS] 14 张表快照备份全部完成,教师唯一真实数据已安全封存。`
- **Stage 1 最终判定**: **PASS**。
- **后续迁移准备**: 满足 Stage 2 (`002_create_new_tables.sql`) 的前置准入条件。