使用金仓 KINGBASE数据库

数据库选型建议

PIGX 官方目前主推 MySQL 8 和 达梦国产化数据库,建议优先在这两种数据库上跑通基础功能后,再探索使用其他类型的数据库。 本章节依赖金仓的 postgresql模式

环境说明

依赖版本
数据库kingbase_v009r001c010b0004_single_x86
PIGX5.10
架构模式微服务
数据库同步工具dbswitch 1.9.8

安装金仓数据库

下载Docker镜像

将下载的镜像 KingbaseES_V009R001C010B0004_x86_64_Docker.tar 进行加载到 docker

docker load -i KingbaseES_V009R001C010B0004_x86_64_Docker.tar
  • 执行初始化安装
docker run -tid --privileged \
-p 54321:54321 \
-v /opt/kingbase/data:/home/kingbase/userdata/ \
--restart=always \
-e NEED_START=yes  \
-e DB_USER=kingbase  \
-e DB_PASSWORD=123456 \
-e DB_MODE=pg  \
--name kingbase  \
kingbase_v009r001c010b0004_single_x86:v1 /usr/sbin/init

① nacos 链接金仓

单体架构可跳过
此步骤较为复杂:由于 Nacos 仅支持 MySQL,需要额外插件。如果使用单体架构且无需 Nacos,可直接跳过。

点击下载 nacos 人大金仓的数据库脚本

pigx-register 链接

  • pigx-register/pom.xml
<dependency>
    <groupId>com.sinhy</groupId>
    <artifactId>nacos-postgresql-datasource-plugin-ext</artifactId>
    <version>3.1.0</version>
</dependency>

<dependency>
  <groupId>org.postgresql</groupId>
  <artifactId>postgresql</artifactId>
</dependency>
  • pigx-register/application.properties
spring.sql.init.platform=postgresql
db.num=1
db.url.0=jdbc:postgresql://127.0.0.1:54321/nacos
db.user=kingbase
db.password=123456
db.pool.config.driver-class-name=org.postgresql.Driver

② 同步 MySQL 最新脚本获取对应的金仓脚本

安装同步工具

docker run -d --name dbswitch  -e DBTYPE=h2  -p 9088:9088 \
  registry.cn-hangzhou.aliyuncs.com/inrgihc/dbswitch:latest

在浏览器中访问:http://localhost:9088,默认账号密码:admin/123456

创建同步任务

  • 在“链接管理”中添加数据源,分别添加 MySQL(指向 PIGX 的 MySQL 数据库)和 金仓的数据源(目标为 PIGX 的 KingBase 数据库)。

  • 在“任务管理”中创建任务并启动执行。

创建同步任务

common-sequence 修改

  • pigx-common-sequence/pom.xml 中增加金仓驱动:
<dependency>
    <groupId>org.anyline</groupId>
    <artifactId>anyline-data-jdbc-kingbase</artifactId>
    <version>8.7.2-jdk17-20250109</version>
</dependency>

修改各模块数据库链接信息

  • 添加金仓驱动包
<dependency>
    <groupId>cn.com.kingbase</groupId>
    <artifactId>kingbase8</artifactId>
    <version>9.0.1</version>
</dependency>
  • JDBCURL 链接金仓
driver-class-name: com.kingbase8.Driver
username: kingbase
password: 123456
# 注意 currentSchema=public,sys_catalog 必须这么写
url: jdbc:kingbase8://47.96.66.43:54321/pigai?currentSchema=public,sys_catalog

Quartz 模块调整

任务调度兼容性

XXL 不支持 mysql 以外数据源,请使用 PIGX 内置的 Quartz 任务调度

  1. 表同步注意事项:数据库同步时不要同步 qrtz_* 开头的 Quartz 相关表

  2. 配置文件调整

    • 修改 quartz-config.yml 中的 initialize-schema: always
    • 首次启动时系统会自动创建所需的 Quartz 表结构,后续修改为 never
  3. 驱动委托类配置, 将 driverDelegateClass 调整为 PostgreSQL 专用委托类:

driverDelegateClass: org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
Quartz配置

Flow 工作流模块

关闭 flowable 自动创建表

# 增加如下属性
flowable:
  database-schema-update: none

手动执行 flowable 金仓脚本

flowable.金仓创建脚本.all.create

AbstractEngineConfiguration 设置金仓方言

金仓方言设置