规则变更流程
规则变更流程用于官方 DistSQL-only 功能生成可审查的数据库治理变更时,引导用户完成需求确认、预览、执行和校验。 它不是一个独立业务功能;用户通常会在具体的数据加密、数据脱敏、广播表、读写分离、影子库或分片任务中进入这个流程。
适用场景
- 创建、修改或删除 ShardingSphere 规则。
- 变更前需要查看将要执行的规则 DistSQL 或其他变更产物。
- 不希望自动执行,希望导出人工执行包。
- 执行后需要按功能插件自身边界确认规则状态或 workflow 执行结果。
基本流程
| 阶段 | 用户操作 | 关注点 |
|---|---|---|
| 描述需求 | 说明要变更的逻辑库、表、列和治理目标。 | 信息越明确,生成的计划越稳定。 |
| 补充信息 | 根据提示补齐算法、参数、密钥占位符或执行偏好。 | 敏感值应通过受保护渠道提供。 |
| 审查计划 | 查看生成的待执行规则 DistSQL、变更产物和影响范围。 | 确认是否符合业务预期。 |
| 预览变更 | 要求先预览,不修改运行时状态。 | 检查将执行的语句和副作用。 |
| 执行变更 | 确认自动执行,或导出人工执行包后由运维执行。 | 有副作用的变更必须经过确认。 |
| 校验结果 | 执行后按功能插件返回规则状态或 workflow 执行结果。 | 确认变更是否生效。 |
计划响应字段
规划工具会返回 plan_id,用于把已生成计划连接到 workflow resource、预览、执行和校验工具。
执行前应先通过 workflow resource 审查已持久化的计划。
当用户需要再次确认时,应先预览再执行。
面向模型的规划响应可能包含:
summary:简短的模型可读状态摘要,说明计划需要补充信息、可以预览,或已经失败。algorithm_recommendations:根据 Proxy 可见插件目录或用户显式输入选择的候选算法。property_requirements:所选算法的必填或可选属性;缺少必填属性时,workflow 会保持在澄清状态,而不是生成不安全产物。resources_to_read和next_actions:继续 workflow 所需的资源和工具导航提示。distsql_artifacts:在当前功能插件边界内生成的可审查规则 DistSQL。
预览、执行、人工执行包导出和校验响应也会返回 summary 和 next_actions。
Client 应优先遵循这些字段,而不是自行猜测替代调用,或向用户询问 payload 中已经包含的信息。
变更执行选择
| 用户说法 | 用户会得到什么 | 关注点 |
|---|---|---|
| “先预览,不要执行。” | 只返回变更内容和影响范围。 | 适合先确认待执行语句、变更产物和副作用。 |
| “确认执行刚才的计划。” | 执行已经预览并确认的变更。 | 适合用户已经完成审查的场景。 |
| “导出人工执行包。” | 返回可由运维人员审查和执行的语句。 | 适合需要审批、变更窗口或受控环境执行的场景。 |
敏感输入
规则变更可能需要密钥或凭证等敏感字段。 这些值不应写入普通文档、聊天记录或日志。
推荐处理方式:
- 在算法属性中使用敏感值占位符对象,例如
{"secret_ref": "placeholder://secret-value-1"}。 - 先通过
execution_mode=preview审查规则 DistSQL;预览响应只显示中性占位符或******。 - 如果工作流仍包含敏感值占位符,自动执行会在产生副作用前停止,并返回
secret_reference_manual_execution_required。 - 使用人工执行包时,执行人员在 MCP 和 AI 应用之外的受控环境中替换真实值后再执行。
ShardingSphere-MCP 只记录需要人工替换的敏感值槽位,不会从外部系统获取真实敏感值。
审查重点
- 待执行语句是否符合预期规则变更。
- 变更产物是否符合当前功能插件的能力边界。
- 官方功能插件只在各自文档边界内生成规则 DistSQL,不生成物理 DDL、索引、迁移、回填、洗数、物理元数据探测或存储单元变更任务。
- 是否会修改运行时规则、元数据或数据。
- 是否需要人工执行、备份、回滚预案或业务审批。
- 校验结果是否符合对应功能插件声明的规则状态或 workflow 执行结果边界。