Files
CN_Tool/system-ops/dbms/README.md
yexb 36962221f5 feat(dbms): 增加数据库备份任务停止重启功能和MySQL支持
- 添加了备份任务停止和重启接口及实现
- 实现了对MySQL数据库的支持,包括数据库名配置
- 重构了数据库连接和备份操作的SPI架构
- 优化了备份文件删除逻辑,支持目录递归删除
- 增加了连接名称唯一性校验
- 完善了备份任务状态管理和错误处理机制
- 更新了数据库连接参数验证逻辑
2026-06-09 13:14:43 +08:00

102 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# dbms 模块说明
## 模块定位
`dbms``system-ops` 下的数据库运维模块,当前支持 Oracle、MySQL 两类数据库运维能力,其中 Oracle 支持 `DATA_PUMP``JDBC_EXPORT`MySQL 当前支持 `JDBC_EXPORT`
## 当前接口
- `GET /database/overview`
- 查询数据库运维概览信息。
- `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
mysql-fetch-size: 1000
tools:
expdp-path:
impdp-path:
```
说明:
- `backup.storage-path`
- `JDBC_EXPORT` 生成的 CSV 和元数据 JSON 的受管根目录。
- `backup.default-max-file-size-mb`
- MySQL `JDBC_EXPORT` 默认分片大小,前端可通过 `maxFileSizeMb` 覆盖,默认 512MB。
- `backup.mysql-fetch-size`
- MySQL `JDBC_EXPORT` 流式读取批量大小,默认 1000。
- `tools.expdp-path``tools.impdp-path`
- Oracle Data Pump 工具路径;为空时尝试走系统 `PATH`
## 当前行为
- 当前能力矩阵如下:
| 数据库类型 | 连接测试 | 表列表 | JDBC_EXPORT | DATA_PUMP |
| --- | --- | --- | --- | --- |
| ORACLE | 支持 | 支持 | 支持 | 支持 |
| MYSQL | 支持 | 支持 | 支持 | 不支持 |
- 备份和恢复只允许基于已保存且连接可用的连接配置发起。
- 新增连接前的测试接口仍可传 `temporaryPassword` 做临时连通性测试。
- 备份任务异步执行,只有实际文件生成成功后才会写入 `dbms_backup_file` 记录。
- `JDBC_EXPORT` 当前会生成两类文件:
- 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`
- `JDBC_EXPORT` 恢复依赖元数据文件,不再允许缺少元数据直接发起恢复。
- 删除备份文件时,会校验目标路径必须位于受管备份目录下,避免误删非备份文件。
## 当前限制
- `DATA_PUMP` 仍依赖部署机器可执行 `expdp``impdp`,并且 Oracle 侧已准备好 `directory` 对象和权限。
- 当前代码要求 `DATA_PUMP` 连接配置里补齐可管理的 `directoryPath`,否则虽然 Oracle 端可能已导出成功,后端无法安全管理文件记录与删除。
- `JDBC_EXPORT` 恢复当前仅覆盖表数据,不承诺恢复索引、约束、触发器、序列、存储过程、权限等数据库对象。
- `TIME_RANGE` 模式当前只在 `JDBC_EXPORT` 场景真正参与查询过滤;`DATA_PUMP` 尚未接入 Oracle `QUERY` 参数。
- MySQL `JDBC_EXPORT` 已实现按大小分片Oracle `JDBC_EXPORT` 仍沿用原单文件导出路径。
- 本轮仅完成代码路径和文档收口,未执行 `mvn` 编译、测试或真实库联调。