首批通过分布式安全可靠测评,为关键业务系统打造
使用 Flyway 集成 OceanBase 数据库实现版本管理
更新时间:2026-04-09 14:12:04
Flyway 是一款开源的数据库版本管理工具,通过创建历史记录表跟踪数据库状态,实现自动化迁移。本文介绍如何在 OceanBase 数据库中集成 Flyway,实现 Schema 变更的自动化部署与版本追溯。
前提条件
您已完成部署 OceanBase 数据库并且创建了用户租户。创建用户租户的详细信息,参见 创建租户。
操作步骤
步骤一:获取数据库连接信息
联系 OceanBase 数据库部署人员或者管理员获取相应的数据库连接串,例如:
obclient -h$host -P$port -u$user_name -p$password -D$database_name
参数说明:
$host:提供 OceanBase 数据库连接 IP。OceanBase 数据库代理(OceanBase Database Proxy,ODP)连接方式使用的是一个 ODP 地址;直连方式使用的是 OBServer 节点的 IP 地址。$port:提供 OceanBase 数据库连接端口。ODP 连接的方式默认是2883,在部署 ODP 时可自定义;直连方式默认是2881,在部署 OceanBase 数据库时可自定义。$database_name:需要访问的数据库名称。注意
连接租户的用户需要拥有该数据库的
CREATE、INSERT、DROP和SELECT权限。更多有关用户权限的信息,请参见 MySQL 模式下的权限分类。$user_name:提供租户的连接账户。ODP 连接的常用格式:用户名@租户名#集群名或者集群名:租户名:用户名;直连方式格式:用户名@租户名。$password:提供账户密码。
更多连接串的信息,请参见 通过 OBClient 连接 OceanBase 租户。
步骤二:集成配置
MySQL 兼容模式租户
OceanBase 数据库的 MySQL 兼容模式租户建议使用 flyway-core 10.0.0 或更高版本,并依赖 mysql-connector-java 和 flyway-database-oceanbase 组件。
更低版本的 Flyway,请参考以下表格:
| OceanBase 数据库版本 | Flyway 版本 | 备注 |
|---|---|---|
| V4.2.5 及之后版本 | < 10.x | 请联系 OceanBase 数据库技术支持 |
| V4.2.5 之前版本 | < 9.x | 暂不支持 |
| V4.2.5 之前版本 | 9.x | 请联系 OceanBase 数据库技术支持 |
配置 Maven 依赖。
在项目的
pom.xml文件中添加以下依赖项:<dependencies> <dependency> <groupId>org.flywaydb</groupId> <artifactId>flyway-core</artifactId> <version>11.3.2</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.47</version> </dependency> <dependency> <groupId>org.flywaydb</groupId> <artifactId>flyway-database-oceanbase</artifactId> <version>10.7.2</version> </dependency> </dependencies>创建迁移脚本。
在 Maven 项目的
resources目录下创建db/migration文件夹,并在其中创建以下两个 SQL 文件:文件一:V1_1__create_person_table.sql
CREATE TABLE person ( id INT NOT NULL, name VARCHAR(20) NOT NULL );文件二:V2_1__add_person_table.sql
INSERT INTO person (id, name) VALUES (1, 'apple');
编写 Java 测试类。
创建 Java 类 FlywayTest,使用 Flyway 进行数据库迁移。请根据前提条件中获取的连接串修改代码中的数据库连接信息。
public class FlywayTest { public static void main(String[] args) { String url = "jdbc:mysql://host:port/dbName"; String user = "username"; String password = "password"; Flyway flyway = Flyway.configure() .dataSource(url, user, password) .load(); flyway.baseline(); flyway.migrate(); } }参数说明:
host:OceanBase 数据库连接地址。port:OceanBase 数据库连接端口。dbName:需要访问的数据库名称。username:数据库账号名称。password:账户密码。
执行测试。
运行 FlywayTest 之后,可以在 OceanBase 数据库中看到创建的 person 表及插入的数据。

Oracle 兼容模式租户
OceanBase 数据库的 Oracle 兼容模式租户要求 flyway-core 10.9.0 或更高版本,并需要使用 oceanbase-client、flyway-mysql 以及 flyway-database-oceanbase 组件。
说明
可从 GitHub 下载 flyway-database-oceanbase 10.16.1 版本,其他版本请联系 OceanBase 数据库技术支持获取。
配置 Maven 依赖。
在项目的
pom.xml文件中添加以下依赖项:<dependencies> <dependency> <groupId>org.flywaydb</groupId> <artifactId>flyway-core</artifactId> <version>10.9.0</version> </dependency> <dependency> <groupId>com.oceanbase</groupId> <artifactId>oceanbase-client</artifactId> <version>2.4.11</version> </dependency> <dependency> <groupId>org.flywaydb</groupId> <artifactId>flyway-mysql</artifactId> <version>10.7.0</version> </dependency> <dependency> <groupId>org.flywaydb</groupId> <artifactId>flyway-database-oceanbase</artifactId> <version>10.16.1</version> <scope>system</scope> <systemPath>/path/to/your/flyway-database-oceanbase-10.16.1.jar</systemPath> </dependency> </dependencies>创建迁移脚本。
在 Maven 项目的
resources目录下创建db/migration文件夹,并在其中创建以下两个 SQL 文件:文件一:V1_1__create_person_table.sql
CREATE TABLE person ( id INT NOT NULL, name VARCHAR(20) NOT NULL );文件二:V2_1__add_person_table.sql
INSERT INTO person (id, name) VALUES (1, 'apple');
编写 Java 测试类。
创建 Java 类 FlywayTest,使用 Flyway 进行数据库迁移。请根据前提条件中获取的连接串修改代码中的数据库连接信息。
public class FlywayTest { public static void main(String[] args) { String url = "jdbc:oceanbase://host:port/"; String user = "username"; String password = "password"; Flyway flyway = Flyway.configure() .dataSource(url, user, password) .load(); flyway.baseline(); flyway.migrate(); } }参数说明:
host:OceanBase 数据库连接地址。port:OceanBase 数据库连接端口。username:数据库账号名称。password:账户密码。
执行测试。
运行 FlywayTest 之后,可以在 OceanBase 数据库中看到创建的 person 表及插入的数据。
