wso2~4.5升级到4.6需要更新的数据表

4.6新版特色功能

WSO2 API Manager 从 4.5 升级到 4.6 的版本中,对 MCP(模型上下文协议,Model Context Protocol)的支持确实是一个非常重要的架构级更新。下面我以 MCP 为切入点,重新梳理一下这个版本的核心变化。

这个新功能的本质,是将 WSO2 API Manager 从一个传统的 API 管理平台,升级为同时具备 AI 就绪能力的网关和中心。它解决了如何让现有 API 被 AI 智能体(Agents)高效、可控地发现和调用的问题。

🌉 核心概念:MCP Gateway 与 MCP Hub

WSO2 APIM 4.6.0 通过引入两个核心概念来实现这一目标:

  • MCP Gateway (MCP 网关):这是 API 网关能力的延伸。它让 WSO2 可以原生地接入和处理 MCP 协议,将现有 API 无缝转换为 AI 智能体能直接调用的工具(Tools)。
  • MCP Hub (MCP 中心):这是控制平面的新角色。开发者门户(Developer Portal)可以配置为 MCP Hub,成为组织内部所有 MCP 服务器的统一发现、管理和复用中心,方便不同团队共享 AI 能力。

✨ 核心能力:三大应用场景

基于上述架构,WSO2 APIM 4.6.0 为管理和使用 MCP 服务提供了三种主要方式:

  1. 灵活多样的 MCP 服务创建方式:你可以通过三种途径来生成 MCP 服务:

    • 从现有 API 转换:将平台内已有的 API 直接转换为 MCP 服务,让传统 API 快速具备 AI 交互能力。
    • 导入外部 API 定义:通过导入标准的 OpenAPI 定义,将外部的 REST API 封装成 MCP 服务。
    • 代理外部 MCP 服务器:将已经存在的、第三方或外部的 MCP 服务器接入 WSO2 进行统一代理和管理。
  2. MCP Hub 的集中管理

    • 开发者门户模式切换:你可以将开发者门户设置为 MCP_ONLY(仅MCP模式)、HYBRID(混合模式)或 API_ONLY(仅API模式),以匹配团队的消费习惯。
    • 集成测试工具:开发者门户中内置了 MCP Playground,你可以像使用 Swagger UI 一样,在这里直观地浏览 MCP 服务的 Schema 并直接调用其工具进行测试,大大降低了 AI 应用的开发调试门槛。
  3. 开发优先的导入与治理

    • API 控制器支持:WSO2 的命令行工具 apictl 增加了对 MCP 服务的导入和管理能力。你可以通过 apictl import mcp-server 命令,在 CI/CD 管道中自动化地创建和部署 MCP 服务。
    • 企业级治理能力:所有接入的 MCP 服务,都可以享受到 WSO2 APIM 平台原有的治理能力,如认证、限流、监控和分析,确保 AI 对后端服务的访问是安全、可控和可观测的。

WSO2 API Manager 4.5 到 4.6 数据库升级指南

wso2-apim4.6多了几张表,现在有表加了几个字段,已总结到wso2am4_6_upgrade.sql文件

apimgt4.6新增表

  • am_api_metadata
  • am_api_operation_mapping
  • am_backend
  • am_backend_operation_mapping
  • am_gw_instance_env_mapping
  • am_gw_instances
  • am_gw_revision_deployment
  • am_task_lock

apimgt4.6表修改

  • am_api
    • API_DISPLAY_NAME
    • INITIATED_FROM_GW
  • am_api_primary_ep_mapping
    • REVISION_UUID
  • am_api_url_mapping
    • DESCRIPTION
    • SCHEMA_DEFINITION
  • am_llm_provider
    • MODEL_FAMILY_SUPPORTED
    • MODEL_FAMILY_NAME
  • am_gateway_environment
    • ENV_MODE
    • SCHEDULED_TIME

sql总结如下

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;
posted @ 2026-03-20 15:03  张占岭  阅读(35)  评论(0)    收藏  举报