前言¶
DeepSeek Harness(DSH)的生态核心在于插件化。对于达梦 DM8 数据库的运维人员来说,缺乏一套结构化的方法来评估数据库在灾难发生后的实际恢复能力是一个常见痛点。DM-recovery 插件旨在填补这一空白,它通过对照恢复场景与实际库状态,输出客观的恢复能力报告。
这是什么¶
DM-recovery 是一个达梦 DM8 数据库可恢复能力评估插件。由 Shiyuedong-Jade 维护,基于 MIT 许可证开源。它不进行修复或扫描,而是通过核对库内元数据与(可选的)主机只读命令,回答“能否恢复到哪一点”以及“需要丢弃哪些数据”的问题。
核心功能¶
插件主要围绕 16 个恢复场景进行评估,并输出五档能力判定:
- 16 个恢复场景:覆盖逻辑损坏(5 项)、物理损坏(8 项)和集群容灾(3 项)。包括单条记录误删、整表误 DROP/TRUNCATE、单页/单文件损坏、控制文件丢失、DMDSC 节点故障等。
- 五档能力判定:对每个场景判定为“可恢复”、“仅能粗粒度恢复”、“不可恢复”、“无法判定”或“不适用”。
- 归档链逐段核对:验证归档链的连续性,检查未归档尾部及可回溯起点。
- 备份可用性核对:从“账本(V$BACKUPSET)”到“磁盘位置”,再到“调用方提供的备份路径”三个维度核对备份集的可信度。
- DMDSC 支持:支持逐节点核对参数差异、坏页归属及归档目录自足性。
- 可选 SSH 只读核验:在数据库主机上执行
dmrman CHECK BACKUPSET、日志扫描和文件查找,获取库内查询无法获取的坏页证据。 - HTML 报告与 findings:生成包含场景对照表和结论摘要的 HTML 报告,并附带
findings.json供机器解析。
安装与启用¶
在 DSH 环境中,使用官方插件命令安装:
dsh plugin --profile web add github:Shiyuedong-Jade/DM-recovery
安装后,首次运行需重启 dsh web。由于达梦 JDBC 驱动属于商业组件,不随插件分发,需手动放置到工作目录:
| 平台 | 路径 |
|---|---|
| Windows | %USERPROFILE%\.dsh\dm-recovery-readiness\drivers\ |
| Linux | ~/.dsh/dm-recovery-readiness/drivers/ |
确保路径下有 DmJdbcDriver8.jar 文件。
使用¶
在会话中调用 dm_recovery_readiness 命令。该命令有一个必填参数 action,支持以下 6 种动作:
| action | 说明 |
|---|---|
report |
生成 HTML 报告与 findings.json,这是主产出 |
readiness |
执行处置能力体检,判断能否在线修及恢复程度 |
list |
查询坏页清单,判断是否需再次修复 |
triage |
逐页分诊,定位坏页到具体对象并给出处置路径 |
backup |
检查备份可用性,核对账本、磁盘与自定义路径 |
capacity |
检查归档空间参数与回溯窗口 |
基本参数¶
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
action |
string | 必填 | 指定上述动作之一 |
host |
string | — | 数据库服务器 IP 或主机名,支持 host:port |
port |
integer | 5236 | 数据库端口 |
user |
string | SYSDBA | 数据库账号 |
targets |
string | — | DMDSC 节点列表,格式 host:port,逗号分隔 |
outDir |
string | 插件工作目录下 | 报告输出目录 |
backupPath |
string | — | backup 动作时,调用方提供的备份位置 |
sshHost |
string | — | 主机侧核验的数据库主机 IP,为空则仅做 JDBC 查询 |
示例¶
生成一份恢复能力报告:
dm_recovery_readiness report host=10.0.0.61 user=SYSDBA
检查备份可用性:
dm_recovery_readiness backup host=10.0.0.61 backupPath=/path/to/backup
报告与输出¶
report 动作会在输出目录生成两个文件:
dm-recovery-<库名>-<时间戳>.html:包含 16 个场景的对照表、能力汇总和处置建议。dm-recovery-<库名>-<时间戳>.findings.json:结构化数据,用于自动化处理。
报告默认输出到插件工作目录下的 dm-recovery-reports。
安全与权限¶
该插件采用纯只读设计:
- 库内操作:所有 SQL 均为查询语句。
- 主机操作:若配置了 SSH,仅执行三条只读命令(
dmrman CHECK BACKUPSET、日志扫描脚本、文件查找)。不执行修复、恢复或修改配置的操作。
适用场景与注意¶
- 适用场景:定期进行恢复能力体检,评估 DM8 实例在遭遇逻辑或物理损坏时的存活能力,以及 DMDSC 集群的容灾配置合理性。
- 前置依赖:
- Node.js ≥ 20
- Java ≥ 8(用于桥接)
- 需自行提供达梦 JDBC 驱动
DmJdbcDriver8.jar - DeepSeek Harness 0.1.x
- 若需主机核验,需
plink(主机密钥指纹需确认)及手工拷贝的脚本scan-backup-log.sh到数据库主机。
短结尾¶
DM-recovery 插件为达梦数据库运维提供了一套标准化的恢复能力评估手段。通过结构化的场景测试和详细的 HTML 报告,DBA 可以快速定位归档链断裂、备份不可用或集群配置缺失等关键问题。其只读特性保证了在评估过程中的数据安全性。