wso2~4.5升级到4.6需要更新的数据表
<h1 id="46新版特色功能">4.6新版特色功能</h1><p>WSO2 API Manager 从 4.5 升级到 4.6 的版本中,对 <strong>MCP(模型上下文协议,Model Context Protocol)的支持确实是一个非常重要的架构级更新</strong>。下面我以 MCP 为切入点,重新梳理一下这个版本的核心变化。</p>
<p>这个新功能的本质,是<strong>将 WSO2 API Manager 从一个传统的 API 管理平台,升级为同时具备 AI 就绪能力的网关和中心</strong>。它解决了如何让现有 API 被 AI 智能体(Agents)高效、可控地发现和调用的问题。</p>
<h3 id="-核心概念mcp-gateway-与-mcp-hub">🌉 核心概念:MCP Gateway 与 MCP Hub</h3>
<p>WSO2 APIM 4.6.0 通过引入两个核心概念来实现这一目标:</p>
<ul>
<li><strong>MCP Gateway (MCP 网关)</strong>:这是 API 网关能力的延伸。它让 WSO2 可以原生地接入和处理 MCP 协议,将现有 API 无缝转换为 AI 智能体能直接调用的工具(Tools)。</li>
<li><strong>MCP Hub (MCP 中心)</strong>:这是控制平面的新角色。开发者门户(Developer Portal)可以配置为 MCP Hub,成为组织内部所有 MCP 服务器的统一发现、管理和复用中心,方便不同团队共享 AI 能力。</li>
</ul>
<h3 id="-核心能力三大应用场景">✨ 核心能力:三大应用场景</h3>
<p>基于上述架构,WSO2 APIM 4.6.0 为管理和使用 MCP 服务提供了三种主要方式:</p>
<ol>
<li>
<p><strong>灵活多样的 MCP 服务创建方式</strong>:你可以通过三种途径来生成 MCP 服务:</p>
<ul>
<li><strong>从现有 API 转换</strong>:将平台内已有的 API 直接转换为 MCP 服务,让传统 API 快速具备 AI 交互能力。</li>
<li><strong>导入外部 API 定义</strong>:通过导入标准的 OpenAPI 定义,将外部的 REST API 封装成 MCP 服务。</li>
<li><strong>代理外部 MCP 服务器</strong>:将已经存在的、第三方或外部的 MCP 服务器接入 WSO2 进行统一代理和管理。</li>
</ul>
</li>
<li>
<p><strong>MCP Hub 的集中管理</strong>:</p>
<ul>
<li><strong>开发者门户模式切换</strong>:你可以将开发者门户设置为 <code>MCP_ONLY</code>(仅MCP模式)、<code>HYBRID</code>(混合模式)或 <code>API_ONLY</code>(仅API模式),以匹配团队的消费习惯。</li>
<li><strong>集成测试工具</strong>:开发者门户中内置了 <strong>MCP Playground</strong>,你可以像使用 Swagger UI 一样,在这里直观地浏览 MCP 服务的 Schema 并直接调用其工具进行测试,大大降低了 AI 应用的开发调试门槛。</li>
</ul>
</li>
<li>
<p><strong>开发优先的导入与治理</strong>:</p>
<ul>
<li><strong>API 控制器支持</strong>:WSO2 的命令行工具 <strong>apictl</strong> 增加了对 MCP 服务的导入和管理能力。你可以通过 <code>apictl import mcp-server</code> 命令,在 CI/CD 管道中自动化地创建和部署 MCP 服务。</li>
<li><strong>企业级治理能力</strong>:所有接入的 MCP 服务,都可以享受到 WSO2 APIM 平台原有的治理能力,如<strong>认证、限流、监控和分析</strong>,确保 AI 对后端服务的访问是安全、可控和可观测的。</li>
</ul>
</li>
</ol>
<h1 id="wso2-api-manager-45-到-46-数据库升级指南">WSO2 API Manager 4.5 到 4.6 数据库升级指南</h1>
<blockquote>
<p>wso2-apim4.6多了几张表,现在有表加了几个字段,已总结到wso2am4_6_upgrade.sql文件</p>
</blockquote>
<h3 id="apimgt46新增表">apimgt4.6新增表</h3>
<ul>
<li>am_api_metadata</li>
<li>am_api_operation_mapping</li>
<li>am_backend</li>
<li>am_backend_operation_mapping</li>
<li>am_gw_instance_env_mapping</li>
<li>am_gw_instances</li>
<li>am_gw_revision_deployment</li>
<li>am_task_lock</li>
</ul>
<h3 id="apimgt46表修改">apimgt4.6表修改</h3>
<ul>
<li>am_api
<ul>
<li>API_DISPLAY_NAME</li>
<li>INITIATED_FROM_GW</li>
</ul>
</li>
<li>am_api_primary_ep_mapping
<ul>
<li>REVISION_UUID</li>
</ul>
</li>
<li>am_api_url_mapping
<ul>
<li>DESCRIPTION</li>
<li>SCHEMA_DEFINITION</li>
</ul>
</li>
<li>am_llm_provider
<ul>
<li>MODEL_FAMILY_SUPPORTED</li>
<li>MODEL_FAMILY_NAME</li>
</ul>
</li>
<li>am_gateway_environment
<ul>
<li>ENV_MODE</li>
<li>SCHEDULED_TIME</li>
</ul>
</li>
</ul>
<h1 id="sql总结如下">sql总结如下</h1>
<pre><code>SET FOREIGN_KEY_CHECKS=0;
-- 去索引避免无法复制数据
-- ALTER TABLE `wso2am_db`.`am_api_metadata` DROP FOREIGN KEY `am_api_metadata_ibfk_1`;
-- ALTER TABLE `wso2am_db`.`am_backend` DROP FOREIGN KEY `am_backend_ibfk_1`;
-- ALTER TABLE `wso2am_db`.`am_gw_revision_deployment` DROP FOREIGN KEY `am_gw_revision_deployment_ibfk_2`;
-- 添加字段
ALTER TABLE `wso2am_db_pre`.`am_api`
MODIFY COLUMN `API_SUBTYPE` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL AFTER `API_TYPE`;
ALTER TABLE `wso2am_db`.`am_api` ADD COLUMN `API_DISPLAY_NAME` varchar(256) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL AFTER `SUB_VALIDATION`;
ALTER TABLE `wso2am_db`.`am_api` ADD COLUMN `INITIATED_FROM_GW` int NULL DEFAULT 0 AFTER `API_DISPLAY_NAME`;
ALTER TABLE `wso2am_db`.`am_api_primary_ep_mapping` ADD COLUMN `REVISION_UUID` varchar(100) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL DEFAULT 'Current API' AFTER `ENDPOINT_UUID`;
ALTER TABLE `wso2am_db`.`am_api_url_mapping` ADD COLUMN `DESCRIPTION` blob NULL AFTER `LOG_LEVEL`;
ALTER TABLE `wso2am_db`.`am_api_url_mapping` ADD COLUMN `SCHEMA_DEFINITION` blob NULL AFTER `DESCRIPTION`;
ALTER TABLE `wso2am_db`.`am_llm_provider` ADD COLUMN `MODEL_FAMILY_SUPPORTED` varchar(5) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL DEFAULT 'false' AFTER `API_DEFINITION`;
ALTER TABLE `wso2am_db`.`am_llm_provider_model` ADD COLUMN `MODEL_FAMILY_NAME` varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL AFTER `MODEL_NAME`;
ALTER TABLE `wso2am_db`.`am_gateway_environment` ADD COLUMN `ENV_MODE` varchar(45) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL DEFAULT 'WRITE_ONLY' AFTER `GATEWAY_TYPE`;
ALTER TABLE `wso2am_db`.`am_gateway_environment` ADD COLUMN `SCHEDULED_TIME` int NULL DEFAULT NULL AFTER `ENV_MODE`;
CREATE TABLE `wso2am_db`.`am_api_metadata`(
`API_UUID` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`REVISION_UUID` varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL DEFAULT 'Current API',
`METADATA_KEY` varchar(256) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`METADATA_VALUE` varchar(1024) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
PRIMARY KEY (`API_UUID`, `REVISION_UUID`, `METADATA_KEY`) USING BTREE,
CONSTRAINT `am_api_metadata_ibfk_1` FOREIGN KEY (`API_UUID`) REFERENCES `wso2am_db`.`am_api` (`API_UUID`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic;
CREATE TABLE `wso2am_db`.`am_api_operation_mapping`(
`MAPPING_ID` int NOT NULL AUTO_INCREMENT,
`URL_MAPPING_ID` int NOT NULL,
`REF_URL_MAPPING_ID` int NOT NULL,
PRIMARY KEY (`MAPPING_ID`) USING BTREE,
INDEX `URL_MAPPING_ID`(`URL_MAPPING_ID` ASC) USING BTREE,
INDEX `REF_URL_MAPPING_ID`(`REF_URL_MAPPING_ID` ASC) USING BTREE,
CONSTRAINT `am_api_operation_mapping_ibfk_1` FOREIGN KEY (`URL_MAPPING_ID`) REFERENCES `wso2am_db`.`am_api_url_mapping` (`URL_MAPPING_ID`) ON DELETE RESTRICT ON UPDATE RESTRICT,
CONSTRAINT `am_api_operation_mapping_ibfk_2` FOREIGN KEY (`REF_URL_MAPPING_ID`) REFERENCES `wso2am_db`.`am_api_url_mapping` (`URL_MAPPING_ID`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic;
CREATE TABLE `wso2am_db`.`am_backend`(
`BACKEND_ID` varchar(40) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`BACKEND_NAME` varchar(256) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`ENDPOINT_CONFIG` blob NULL,
`DEFINITION` longblob NULL,
`REFERENCE_API_UUID` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`REFERENCE_API_REVISION_UUID` varchar(256) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL DEFAULT 'Current API',
`ORGANIZATION` varchar(100) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
PRIMARY KEY (`BACKEND_ID`) USING BTREE,
UNIQUE INDEX `REFERENCE_API_UUID`(`REFERENCE_API_UUID` ASC, `REFERENCE_API_REVISION_UUID` ASC, `BACKEND_NAME` ASC) USING BTREE,
CONSTRAINT `am_backend_ibfk_1` FOREIGN KEY (`REFERENCE_API_UUID`) REFERENCES `wso2am_db`.`am_api` (`API_UUID`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic;
CREATE TABLE `wso2am_db`.`am_backend_operation_mapping`(
`MAPPING_ID` int NOT NULL AUTO_INCREMENT,
`URL_MAPPING_ID` int NOT NULL,
`BACKEND_ID` varchar(40) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`TARGET` varchar(256) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`VERB` varchar(10) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
PRIMARY KEY (`MAPPING_ID`) USING BTREE,
INDEX `URL_MAPPING_ID`(`URL_MAPPING_ID` ASC) USING BTREE,
INDEX `BACKEND_ID`(`BACKEND_ID` ASC) USING BTREE,
CONSTRAINT `am_backend_operation_mapping_ibfk_1` FOREIGN KEY (`URL_MAPPING_ID`) REFERENCES `wso2am_db`.`am_api_url_mapping` (`URL_MAPPING_ID`) ON DELETE RESTRICT ON UPDATE RESTRICT,
CONSTRAINT `am_backend_operation_mapping_ibfk_2` FOREIGN KEY (`BACKEND_ID`) REFERENCES `wso2am_db`.`am_backend` (`BACKEND_ID`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic;
CREATE TABLE `wso2am_db`.`am_gw_instance_env_mapping`(
`GATEWAY_ID` int NOT NULL,
`ENV_LABEL` varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
PRIMARY KEY (`GATEWAY_ID`, `ENV_LABEL`) USING BTREE,
CONSTRAINT `am_gw_instance_env_mapping_ibfk_1` FOREIGN KEY (`GATEWAY_ID`) REFERENCES `wso2am_db`.`am_gw_instances` (`GATEWAY_ID`) ON DELETE CASCADE ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic;
CREATE TABLE `wso2am_db`.`am_gw_instances`(
`GATEWAY_ID` int NOT NULL AUTO_INCREMENT,
`GATEWAY_UUID` varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`ORGANIZATION` varchar(128) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`LAST_UPDATED` timestamp NOT NULL,
`GW_PROPERTIES` blob NOT NULL,
PRIMARY KEY (`GATEWAY_ID`) USING BTREE,
UNIQUE INDEX `GATEWAY_UUID`(`GATEWAY_UUID` ASC, `ORGANIZATION` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic;
CREATE TABLE `wso2am_db`.`am_gw_revision_deployment`(
`GATEWAY_ID` int NOT NULL,
`API_ID` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`ORGANIZATION` varchar(128) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`STATUS` varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`ACTION` varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`REVISION_UUID` varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL,
`LAST_UPDATED` bigint NOT NULL,
PRIMARY KEY (`GATEWAY_ID`, `API_ID`) USING BTREE,
INDEX `API_ID`(`API_ID` ASC) USING BTREE,
INDEX `IDX_GW_REV_DEPLOY_STATUS`(`STATUS` ASC, `ACTION` ASC) USING BTREE,
CONSTRAINT `am_gw_revision_deployment_ibfk_1` FOREIGN KEY (`GATEWAY_ID`) REFERENCES `wso2am_db`.`am_gw_instances` (`GATEWAY_ID`) ON DELETE CASCADE ON UPDATE RESTRICT,
CONSTRAINT `am_gw_revision_deployment_ibfk_2` FOREIGN KEY (`API_ID`) REFERENCES `wso2am_db`.`am_api` (`API_UUID`) ON DELETE CASCADE ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic;
CREATE TABLE `wso2am_db`.`am_task_lock`(
`LOCK_TIME` bigint NOT NULL,
`TASK_ID` varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`NODE_ID` varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
PRIMARY KEY (`TASK_ID`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS=1;
</code></pre>
</div>
<div id="MySignature" role="contentinfo">
<p></p>
<div class="navgood">
<p>作者:仓储大叔,张占岭,<br>
荣誉:微软MVP<br>QQ:853066980</p>
<p><strong>支付宝扫一扫,为大叔打赏!</strong>
<br><img src="https://images.cnblogs.com/cnblogs_com/lori/237884/o_IMG_7144.JPG"></p>
</div><br><br>
来源:https://www.cnblogs.com/lori/p/19744048
頁:
[1]