2026-05-21 14:08:15 +08:00
|
|
|
|
# dbms 模块说明
|
|
|
|
|
|
|
|
|
|
|
|
## 模块定位
|
|
|
|
|
|
|
2026-06-09 13:14:43 +08:00
|
|
|
|
`dbms` 是 `system-ops` 下的数据库运维模块,当前支持 Oracle、MySQL 两类数据库运维能力,其中 Oracle 支持 `DATA_PUMP`、`JDBC_EXPORT`,MySQL 当前支持 `JDBC_EXPORT`。
|
2026-05-21 14:08:15 +08:00
|
|
|
|
|
|
|
|
|
|
## 当前接口
|
|
|
|
|
|
|
|
|
|
|
|
- `GET /database/overview`
|
2026-05-29 15:15:22 +08:00
|
|
|
|
- 查询数据库运维概览信息。
|
|
|
|
|
|
- `POST /database/connections/list`
|
|
|
|
|
|
- 查询数据库连接配置。
|
|
|
|
|
|
- `POST /database/connections/add`
|
|
|
|
|
|
- 新增 Oracle 数据库连接配置。
|
|
|
|
|
|
- `POST /database/connections/update`
|
|
|
|
|
|
- 修改 Oracle 数据库连接配置。
|
|
|
|
|
|
- `POST /database/connections/delete`
|
|
|
|
|
|
- 删除数据库连接配置。
|
|
|
|
|
|
- `POST /database/connections/test`
|
|
|
|
|
|
- 测试 Oracle 数据库连接。
|
|
|
|
|
|
- `POST /database/connections/tables`
|
|
|
|
|
|
- 查询 Oracle 表列表。
|
|
|
|
|
|
- `POST /database/backups/create`
|
|
|
|
|
|
- 创建备份任务,默认使用 `DATA_PUMP`,可选 `JDBC_EXPORT`。
|
|
|
|
|
|
- `POST /database/backups/tasks/list`
|
|
|
|
|
|
- 查询备份任务列表。
|
|
|
|
|
|
- `GET /database/backups/tasks/status`
|
|
|
|
|
|
- 查询任务状态。
|
|
|
|
|
|
- `POST /database/backups/files/list`
|
|
|
|
|
|
- 查询备份文件记录。
|
|
|
|
|
|
- `POST /database/restores/create`
|
|
|
|
|
|
- 创建恢复任务。
|
|
|
|
|
|
- `GET /database/restores/tasks/status`
|
|
|
|
|
|
- 查询恢复任务状态。
|
|
|
|
|
|
- `POST /database/delete/backup-file`
|
|
|
|
|
|
- 删除备份文件,要求 `confirmText=确认删除`。
|
|
|
|
|
|
- `POST /database/delete/task`
|
|
|
|
|
|
- 删除任务记录,要求 `confirmText=确认删除`。
|
|
|
|
|
|
|
|
|
|
|
|
## 数据脚本
|
|
|
|
|
|
|
|
|
|
|
|
- `src/main/resources/sql/system-ops/system-ops-init.sql`
|
|
|
|
|
|
- 系统运维菜单初始化脚本。
|
|
|
|
|
|
- `src/main/resources/sql/system-ops/dbms-database-ops-init.sql`
|
|
|
|
|
|
- 数据库运维连接、任务、备份文件和恢复记录表结构。
|
|
|
|
|
|
|
|
|
|
|
|
## 配置项
|
|
|
|
|
|
|
|
|
|
|
|
建议通过环境配置覆盖:
|
|
|
|
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
|
|
dbms:
|
|
|
|
|
|
backup:
|
|
|
|
|
|
storage-path: D:/dbms-backup
|
|
|
|
|
|
default-max-file-size-mb: 512
|
2026-06-09 13:14:43 +08:00
|
|
|
|
mysql-fetch-size: 1000
|
2026-05-29 15:15:22 +08:00
|
|
|
|
tools:
|
|
|
|
|
|
expdp-path:
|
|
|
|
|
|
impdp-path:
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
说明:
|
|
|
|
|
|
|
|
|
|
|
|
- `backup.storage-path`
|
|
|
|
|
|
- `JDBC_EXPORT` 生成的 CSV 和元数据 JSON 的受管根目录。
|
2026-06-09 13:14:43 +08:00
|
|
|
|
- `backup.default-max-file-size-mb`
|
|
|
|
|
|
- MySQL `JDBC_EXPORT` 默认分片大小,前端可通过 `maxFileSizeMb` 覆盖,默认 512MB。
|
|
|
|
|
|
- `backup.mysql-fetch-size`
|
|
|
|
|
|
- MySQL `JDBC_EXPORT` 流式读取批量大小,默认 1000。
|
2026-05-29 15:15:22 +08:00
|
|
|
|
- `tools.expdp-path`、`tools.impdp-path`
|
|
|
|
|
|
- Oracle Data Pump 工具路径;为空时尝试走系统 `PATH`。
|
|
|
|
|
|
|
|
|
|
|
|
## 当前行为
|
|
|
|
|
|
|
2026-06-09 13:14:43 +08:00
|
|
|
|
- 当前能力矩阵如下:
|
|
|
|
|
|
|
|
|
|
|
|
| 数据库类型 | 连接测试 | 表列表 | JDBC_EXPORT | DATA_PUMP |
|
|
|
|
|
|
| --- | --- | --- | --- | --- |
|
|
|
|
|
|
| ORACLE | 支持 | 支持 | 支持 | 支持 |
|
|
|
|
|
|
| MYSQL | 支持 | 支持 | 支持 | 不支持 |
|
|
|
|
|
|
- 备份和恢复只允许基于已保存且连接可用的连接配置发起。
|
|
|
|
|
|
- 新增连接前的测试接口仍可传 `temporaryPassword` 做临时连通性测试。
|
2026-05-29 15:15:22 +08:00
|
|
|
|
- 备份任务异步执行,只有实际文件生成成功后才会写入 `dbms_backup_file` 记录。
|
|
|
|
|
|
- `JDBC_EXPORT` 当前会生成两类文件:
|
2026-06-09 13:14:43 +08:00
|
|
|
|
- MySQL `JDBC_EXPORT` 会按任务号创建独立备份目录,每张表独立 CSV,默认按 512MB 分片:
|
|
|
|
|
|
- 数据分片文件:`<table>_part001_yyyyMMdd_<taskNo>.csv`
|
|
|
|
|
|
- 元数据文件:`mysql_jdbc_export_metadata_yyyyMMdd_<taskNo>.json`
|
|
|
|
|
|
- 备份任务支持停止和重新开始:
|
|
|
|
|
|
- `POST /database/backups/tasks/stop`
|
|
|
|
|
|
- `POST /database/backups/tasks/restart`
|
2026-05-29 15:15:22 +08:00
|
|
|
|
- `JDBC_EXPORT` 恢复依赖元数据文件,不再允许缺少元数据直接发起恢复。
|
|
|
|
|
|
- 删除备份文件时,会校验目标路径必须位于受管备份目录下,避免误删非备份文件。
|
2026-05-21 14:08:15 +08:00
|
|
|
|
|
|
|
|
|
|
## 当前限制
|
|
|
|
|
|
|
2026-05-29 15:15:22 +08:00
|
|
|
|
- `DATA_PUMP` 仍依赖部署机器可执行 `expdp`、`impdp`,并且 Oracle 侧已准备好 `directory` 对象和权限。
|
|
|
|
|
|
- 当前代码要求 `DATA_PUMP` 连接配置里补齐可管理的 `directoryPath`,否则虽然 Oracle 端可能已导出成功,后端无法安全管理文件记录与删除。
|
2026-06-09 13:14:43 +08:00
|
|
|
|
- `JDBC_EXPORT` 恢复当前仅覆盖表数据,不承诺恢复索引、约束、触发器、序列、存储过程、权限等数据库对象。
|
2026-05-29 15:15:22 +08:00
|
|
|
|
- `TIME_RANGE` 模式当前只在 `JDBC_EXPORT` 场景真正参与查询过滤;`DATA_PUMP` 尚未接入 Oracle `QUERY` 参数。
|
2026-06-09 13:14:43 +08:00
|
|
|
|
- MySQL `JDBC_EXPORT` 已实现按大小分片;Oracle `JDBC_EXPORT` 仍沿用原单文件导出路径。
|
2026-05-29 15:15:22 +08:00
|
|
|
|
- 本轮仅完成代码路径和文档收口,未执行 `mvn` 编译、测试或真实库联调。
|