本地测试环境下,如何将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:
- 使用H2控制台导出H2数据库的SQL脚本,注意替换H2专属语法为MSSQL兼容格式(比如
AUTO_INCREMENT改为IDENTITY)。 - 在MSSQL中执行修改后的SQL脚本导入数据。
- 同样修改
deployment.toml配置连接MSSQL。
关键注意事项
- 迁移前备份:务必复制
<APIM_HOME>/repository/database下的H2数据库文件,防止数据丢失。 - 版本兼容性:确认MSSQL版本符合当前APIM版本要求(例如APIM 4.2.0支持MSSQL 2017及以上)。
- 数据验证:迁移完成后启动APIM,检查日志无报错,验证已发布API、用户信息、应用数据是否完整。
内容的提问来源于stack exchange,提问作者user20692170
相关产品推荐
相关产品推荐

