You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地测试环境下,如何将WSO2 API Manager内置数据库迁移至MSSQL?

WSO2 API Manager 内置H2数据库迁移至MSSQL 实操方案

一、官方简便迁移工具:Database Migration Tool

WSO2 APIM自带了专门的数据库迁移工具,这是最简便的实现方式,无需手动导出导入数据。

步骤1:准备MSSQL环境

  • 在MSSQL中创建所需数据库:通常包括APIM_DB(API Manager核心数据)、SHARED_DB(注册表+用户存储数据),也可根据需求拆分单独的REGISTRY_DB和USER_STORE_DB。
  • 创建具有db_owner权限的数据库用户,确保该用户能访问目标数据库,同时开启MSSQL的本地/远程连接权限(可暂时关闭加密配置避免连接失败)。
  • 将MSSQL JDBC驱动包(mssql-jdbc-*.jar)复制到APIM安装目录的<APIM_HOME>/repository/components/lib下。

步骤2:配置迁移参数

编辑<APIM_HOME>/bin/db-migration-config.yaml文件,指定源(H2)和目标(MSSQL)数据库信息:

migrations:
  -
    source:
      type: h2
      url: "jdbc:h2:./repository/database/WSO2AM_DB;DB_CLOSE_ON_EXIT=FALSE;LOCK_TIMEOUT=60000"
      username: wso2carbon
      password: wso2carbon
    target:
      type: mssql
      url: "jdbc:sqlserver://localhost:1433;databaseName=APIM_DB;encrypt=false"
      username: "mssql-user"
      password: "mssql-password"
    databases:
      - WSO2AM_DB
  -
    source:
      type: h2
      url: "jdbc:h2:./repository/database/WSO2SHARED_DB;DB_CLOSE_ON_EXIT=FALSE;LOCK_TIMEOUT=60000"
      username: wso2carbon
      password: wso2carbon
    target:
      type: mssql
      url: "jdbc:sqlserver://localhost:1433;databaseName=SHARED_DB;encrypt=false"
      username: "mssql-user"
      password: "mssql-password"
    databases:
      - WSO2SHARED_DB

步骤3:执行迁移命令

  • Linux/macOS终端:
cd <APIM_HOME>/bin
./db-migration.sh -config db-migration-config.yaml
  • Windows命令行:
cd <APIM_HOME>\bin
db-migration.bat -config db-migration-config.yaml

等待命令执行完成,查看日志确认无报错即可。

步骤4:配置APIM连接MSSQL

编辑<APIM_HOME>/repository/conf/deployment.toml,替换原有H2数据库配置为MSSQL配置:

# APIM核心数据库配置
[database.apim_db]
type = "mssql"
url = "jdbc:sqlserver://localhost:1433;databaseName=APIM_DB;encrypt=false"
username = "mssql-user"
password = "mssql-password"
driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"

# 共享数据库(注册表+用户存储)配置
[database.shared_db]
type = "mssql"
url = "jdbc:sqlserver://localhost:1433;databaseName=SHARED_DB;encrypt=false"
username = "mssql-user"
password = "mssql-password"
driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"

二、手动迁移备选方案(不推荐,仅作补充)

如果工具迁移出现问题,可手动导出H2数据为SQL脚本再导入MSSQL:

  1. 使用H2控制台导出H2数据库的SQL脚本,注意替换H2专属语法为MSSQL兼容格式(比如AUTO_INCREMENT改为IDENTITY)。
  2. 在MSSQL中执行修改后的SQL脚本导入数据。
  3. 同样修改deployment.toml配置连接MSSQL。

关键注意事项

  • 迁移前备份:务必复制<APIM_HOME>/repository/database下的H2数据库文件,防止数据丢失。
  • 版本兼容性:确认MSSQL版本符合当前APIM版本要求(例如APIM 4.2.0支持MSSQL 2017及以上)。
  • 数据验证:迁移完成后启动APIM,检查日志无报错,验证已发布API、用户信息、应用数据是否完整。

内容的提问来源于stack exchange,提问作者user20692170

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 05:15:37