默认情况下,Pig 仅提供 MySQL 的数据库脚本。本文档介绍如何将 Pig 迁移到使用达梦数据库。

为了 SQL 的准确性、实时性,其他类型的数据库脚本需要开发者基于 Pig MySQL 版本进行转换。本文档以达梦数据库为例。

安装达梦数据库

1. Docker 运行 DM8

使用 Docker 快速部署达梦数据库:

# X86 架构
docker run -p 5236:5236 registry.cn-hangzhou.aliyuncs.com/dockerhub_mirror/dm:8

# ARM 架构
docker run -p 5236:5236 registry.cn-hangzhou.aliyuncs.com/dockerhub_mirror/dm:8-arm64

默认用户名为 SYSDBA,密码为 SYSDBA

2. 安装 SQLark

SQLark 是一款面向信创应用开发者的数据库开发管理、数据库迁移工具,用于快速查询、创建和管理不同类型的数据库系统,现已支持达梦、Oracle 和 MySQL 数据库。

SQLark 下载

虽然安装达梦会自动安装 DTS(达梦自身的迁移工具)和图形化管理工具,但之前的 UI 和操作性较差且不支持 MacOS。SQLark 提供了更好的用户体验,并整合了数据迁移工具。

3. 数据迁移

按照以下步骤进行数据迁移:

  1. 创建达梦数据库链接
  2. 点击 SQLark 的数据迁移
  3. 创建迁移评估
  4. 链接源数据库(MySQL)
  5. 选择待迁移的数据库(pig/pig_config)
  6. 关闭检查
  7. 执行迁移

迁移成功会自动创建 PIG/PIG_CONFIG 的达梦数据库。由于 quartz 的数据结构外键不适配达梦,可能会有一些不兼容的情况,可以忽略。

应用配置

1. 配置 Nacos

pig-register 模块中:

  1. 添加依赖:
<!--达梦数据库 nacos 插件-->
<dependency>
  <groupId>com.pig4cloud.plugin</groupId>
  <artifactId>nacos-datasource-plugin-dm8</artifactId>
  <version>${VERSION}</version>
</dependency>

<!--达梦数据库驱动-->
<dependency>
  <groupId>com.dameng</groupId>
  <artifactId>DmJdbcDriver18</artifactId>
  <version>8.1.1.193</version>
</dependency>
  1. 配置数据库连接:
db:
  num: 1
  url:
    0: jdbc:dm://127.0.0.01:5236?schema=PIG_CONFIG
  user: SYSDBA
  password: SYSDBA
  pool:
    config:
      driver-class-name: dm.jdbc.driver.DmDriver

spring:
  sql:
    init:
      platform: dameng

2. 配置微服务

pig-upms-bizpig-codegenpig-quartz 等模块中:

  1. 添加达梦驱动依赖:
<!--达梦数据库驱动-->
<dependency>
  <groupId>com.dameng</groupId>
  <artifactId>DmJdbcDriver18</artifactId>
  <version>8.1.1.193</version>
</dependency>
  1. 修改数据库连接配置:
spring:
  datasource:
    type: com.zaxxer.hikari.HikariDataSource
    driver-class-name: dm.jdbc.driver.DmDriver
    username: SYSDBA
    password: SYSDBA
    url: jdbc:dm://127.0.0.01:5236?schema=PIG
  1. pig-codegen 模块中添加元数据读取依赖:
<dependency>
  <groupId>org.anyline</groupId>
  <artifactId>anyline-data-jdbc-dm</artifactId>
  <version>${anyline.version}</version>
</dependency>

测试验证

完成以上配置后,启动应用并验证数据库连接是否正常。可以通过访问系统管理模块,查看用户、角色等数据是否正确显示。

♥️ 获取支持

遇到问题?

如果您在使用过程中遇到任何问题、有功能建议或需求,请点击此卡片前往 Gitee 仓库提交 Issue。