news 2026/9/14 19:21:07

如何用 ShardingSphere-MCP 完成读写分离规则的规划、审查与执行工作流

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何用 ShardingSphere-MCP 完成读写分离规则的规划、审查与执行工作流

如何用 ShardingSphere-MCP 完成读写分离规则的规划、审查与执行工作流

【免费下载链接】shardingsphereEmpowering Data Intelligence with Distributed SQL for Sharding, Scalability, and Security Across All Databases.项目地址: https://gitcode.com/GitHub_Trending/sh/shardingsphere

本文的任务是:在 AI 应用中通过自然语言,借助 ShardingSphere-MCP 的读写分离功能插件,为一个 ShardingSphere-Proxy 逻辑库完成读写分离规则的规划、审查、执行与校验,全程只生成可读写的 DistSQL 变更。适用前提:runtimeDatabases配置指向的必须是 ShardingSphere-Proxy 逻辑库,写存储单元和读存储单元必须已经存在于 Proxy 中——该插件只生成读写分离 DistSQL,不会创建或修复存储单元,也不生成物理 DDL、索引 DDL、迁移、回填或物理元数据探测(见 读写分离功能说明)。

准备条件

规划规则前,用户需要能明确提供:逻辑库名、规则名、写存储单元、读存储单元,以及负载均衡算法意图。以下示例统一使用文档中的取值:逻辑库logic_db、规则名rw_ds、写存储单元write_ds、读存储单元read_ds_0, read_ds_1

MCP Server 侧按 快速开始 准备环境:

  • JAVA_HOMEPATH中可用的 JDK 21;
  • 一个可通过 JDBC 访问的 ShardingSphere-Proxy 逻辑库;
  • 一个支持 MCP 的 AI 应用、IDE 插件或 Agent 平台。

在仓库根目录构建发行包:

./mvnw -pl distribution/mcp -am -DskipTests package

进入发行包目录(${version}需替换为实际构建出的版本,例如5.5.4-SNAPSHOT):

cd distribution/mcp/target/apache-shardingsphere-mcp-${version}

预期结果:当前目录包含bin/conf/lib/

编辑conf/mcp-http.yaml,把runtimeDatabases指向已有 Proxy 逻辑库:

runtimeDatabases: "logic_db": jdbcUrl: "jdbc:mysql://127.0.0.1:3307/logic_db" username: "root" password: "" driverClassName: "com.mysql.cj.jdbc.Driver"

logic_db127.0.0.13307root和空密码都是文档示例值,需按实际连接信息替换;MCP Server 会从jdbcUrl解析数据库类型。如果目标数据库驱动没有随发行包提供,启动前把对应 JDBC 驱动 jar 放入plugins/

启动 HTTP MCP Server(Unix-like 系统):

bin/start.sh > logs/mcp-http.log 2>&1 &

Windows 下使用:

start "ShardingSphere MCP" cmd /c "bin\start.bat > logs\mcp-http.log 2>&1"

默认端点是http://127.0.0.1:18088/mcp,在 AI 应用中按 客户端集成 的方式配置该地址。启动后用“查看logic_db中有哪些表”这类最小任务确认 MCP Server 已能访问目标逻辑库;也可以读取shardingsphere://runtime资源或调用database_gateway_validate_runtime_database验证运行时数据库就绪(见 部署说明)。

规划规则:用自然语言生成可审查的计划

在 AI 应用中直接描述需求,例如文档给出的示例:

  • 查看logic_db的读写分离规则和负载均衡算法插件。
  • 规划名为rw_ds的读写分离规则,写存储单元是write_ds,读存储单元是read_ds_0, read_ds_1

规划工具返回的响应面向模型包含以下字段,也是审查计划时的事实来源(见 规则变更流程):

  • plan_id:把已生成计划连接到 workflow resource、预览、执行和校验工具;
  • summary:模型可读状态摘要,说明计划需要补充信息、可以预览或已经失败;
  • algorithm_recommendations:根据 Proxy 可见插件目录或用户显式输入选择的候选算法;
  • property_requirements:所选算法的必填或可选属性,缺少必填属性时 workflow 会保持在澄清状态而不是生成不安全产物;
  • resources_to_readnext_actions:继续 workflow 所需的资源与工具导航提示;
  • distsql_artifacts:当前功能插件边界内生成的可审查规则 DistSQL。

执行 workflow 前,确认返回的plan_idresources_to_readnext_actionsdistsql_artifacts;执行前应先通过 workflow resource 审查已持久化的计划。Client 应优先遵循这些字段,而不是自行猜测替代调用,或向用户询问 payload 中已经包含的信息。

审查计划:确认语句类型、存储单元与算法属性

按 读写分离功能说明 的审查重点逐项核对:

  1. 确认规则计划使用的是CREATEALTERDROP READWRITE_SPLITTING RULE语句。
  2. 确认状态计划使用ALTER READWRITE_SPLITTING RULE ... ENABLEDISABLE
  3. 确认存储单元名是已有逻辑存储单元——workflow 不会创建它们。
  4. 选择负载均衡算法前,审查algorithm_recommendations
  5. 核对算法属性要求:RANDOMROUND_ROBIN不需要负载均衡属性;WEIGHT需要为每个读存储单元提供一个权重属性。

规则变更的通用审查流程(需求确认、预览、执行、校验)同样适用于本场景,完整说明见 规则变更流程。

预览变更:先不修改运行时状态

审查通过后,要求先预览而不执行,例如“先预览,不要执行。”。预览只返回变更内容和影响范围,不修改运行时状态,适合在确认待执行语句、变更产物和副作用后再决定是否执行。

如果计划中使用了敏感值占位符(例如{"secret_ref": "placeholder://secret-value-1"}),预览响应只会显示中性占位符或******。注意:若工作流仍包含敏感值占位符,自动执行会在产生副作用前停止,并返回secret_reference_manual_execution_required——此时应改用人工执行包,由执行人员在 MCP 和 AI 应用之外的受控环境中替换真实值后再执行。

执行变更:自动执行或导出人工执行包

用户说法用户会得到什么适用场景
“先预览,不要执行。”只返回变更内容和影响范围先确认待执行语句、变更产物和副作用
“确认执行刚才的计划。”执行已经预览并确认的变更用户已完成审查
“导出人工执行包。”返回可由运维人员审查和执行的语句需要审批、变更窗口或受控环境执行

三种说法对应同一份已规划的plan_id,选择哪一条取决于变更是否需要人工审批;有副作用的变更必须经过确认后才执行。

校验结果与状态变更

执行后按功能插件返回的规则状态或 workflow 执行结果校验,例如文档示例中的状态变更任务:

  • 禁用规则rw_ds中的读存储单元read_ds_1,然后校验状态。

这类任务走的是状态计划(ALTER READWRITE_SPLITTING RULE ... DISABLE),审查与执行方式与规则计划一致。summarynext_actions字段会说明当前可以继续的操作。

能力边界与限制

  • 仅支持 ShardingSphere-Proxy 逻辑库,数据库直连模式不适用读写分离功能插件。
  • 插件不创建或修复存储单元,不探测物理数据源元数据。
  • 对象名内容不能包含反引号、NUL、回车或换行。
  • 用户看到的是 Proxy 暴露的逻辑元数据,不等同于每个底层物理库的完整元数据。

排障入口

如果 AI 应用无法连接或看不到逻辑库,或规划、执行失败,查看 常见问题;需要直接调试 MCP 协议请求时,见 自研集成附录。运行时状态与基础诊断信息可通过shardingsphere://runtime资源查看,日志位于logs/mcp.log

【免费下载链接】shardingsphereEmpowering Data Intelligence with Distributed SQL for Sharding, Scalability, and Security Across All Databases.项目地址: https://gitcode.com/GitHub_Trending/sh/shardingsphere

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/14 19:18:57

C++ Qt天气预报大作业怎么拿高分:从数据模型到信号槽的完整架构

简介:基于C与QT开发的天气预报系统源码,是面向计算机相关专业学生课程设计和期末大作业的高分参考项目,覆盖从天气API数据获取、界面布局到交互逻辑的完整实现。资源包共74个文件,含6个头文件、5个C源文件、4个UI界面文件及1个项目…

作者头像 李华
网站建设 2026/9/14 19:17:06

CAN线故障诊断全指南:从原理到维修店选择,避免被“试错修车”坑

先讲个真实经历。去年有个朋友在文山市跑网约车,某天早上启动时仪表盘像圣诞树一样全亮:ABS灯、气囊灯、转向助力灯一起报警,挡位挂不上,车子直接趴窝。拖到附近一家维修店,师傅开口就说“行车电脑坏了,换一…

作者头像 李华