跳到主要内容
版本:4.x

Db2 for i

适用版本 企业版功能TapData Enterprise 可部署在您的本地数据中心,适合对数据敏感性或网络隔离有严格要求的场景,可服务于构建实时数仓,实现实时数据交换,数据迁移等场景。

Db2 for i 是 IBM i 内置的关系型数据库,为企业级应用提供数据管理服务。TapData 通过 QSQJRN 日志与 JT400 工具包实现高效数据同步,将运行在 Db2 for i 上的核心业务数据实时集成到现代数据平台。

支持版本与架构

类别说明
版本IBM AS400 v7r4
架构无限制

支持数据类型

类别数据类型
字符串与文本CHAR、VARCHAR
整数类型SMALLINT、INTEGER、BIGINT
浮点数类型REAL、DOUBLE
高精度数值类型DECIMAL、NUMERIC、DECFLOAT
日期和时间DATE、TIME、TIMESTAMP

支持同步的操作

DML:INSERT、UPDATE、DELETE

提示

当 Db2 for i 作为目标库时,支持在插入冲突时转为更新(类似 UPSERT)。

注意事项

  • 当 Db2 for i 作为源库并启用增量读取时,需要为 TapData 提供一个用于中转 Journal 数据的专用 Library。如果连接用户具备执行 CRTLIB 权限,测试连接或启动任务时会自动创建该 Library,您也可手动执行如下命令创建该 Library,TapData 会自动识别并启用:

    CRTLIB LIB(TAPLIB) TEXT('TapData journal transit station')
  • 获取增量变更时,系统会以多线程方式执行 Db2 for i 命令与 SQL 语句读取增量日志,因此会给数据库带来一定压力,并占用网络带宽和磁盘 I/O 资源。

准备工作

在连接 Db2 for i 数据库前,需完成账号授权等准备工作。本文以 IBM i 7.4 平台为例演示相关操作。

作为源库

  1. 在 IBM i 的命令行环境中(可通过 5250 终端会话或 IBM ACS 终端访问),执行以下 CL 命令创建用户。

    # 请基于真实情况替换下述命令中的账号和密码
    CRTUSRPRF USRPRF(TAPDATA) PASSWORD(Your_Password)
    USRCLS(*USER) TEXT('Test User') SPCAUT(*NONE) INLPGM(*NONE)
    INLMNU(*SIGNOFF) LMTCPB(*YES)

    # 可选: 不再需要改用户时可删除
    # DLTUSRPRF USRPRF(TAPDATA) OWNOBJOPT(*DLT)
  2. 为刚创建的账号授予权限。

    在 IBM i 的命令行环境中(可通过 5250 终端会话或 IBM ACS 终端访问),执行以下 CL 命令为业务库与对象赋权(请将 TESTCDC 替换为实际业务库名)。

    # 授予系统基础表读取权限
    GRTOBJAUT OBJ(TESTCDC) OBJTYPE(*LIB) USER(TAPDATA) AUT(*USE)
    # 授予业务库所有对象的使用权限
    GRTOBJAUT OBJ(TESTCDC/*ALL) OBJTYPE(*ALL) USER(TAPDATA) AUT(*USE)

    随后,在 SQL 客户端或 STRSQL 中执行下述 SQL 语句,为账号授予读取系统日志相关表与函数的权限。

    -- 替换 TAPDATA 为您之前创建的账号
    GRANT SELECT ON QSYS2.OBJECT_PRIVILEGES TO TAPDATA;
    GRANT SELECT ON QSYS2.SYSTABLES TO TAPDATA;
    GRANT SELECT ON QSYS2.SYSCOLUMNS TO TAPDATA;
    GRANT SELECT ON QSYS2.SYSKEYCST TO TAPDATA;
    GRANT SELECT ON QSYS2.SYSINDEXES TO TAPDATA;

作为目标库

  1. 在 IBM i 的命令行环境中(可通过 5250 终端会话或 IBM ACS 终端访问),执行以下 CL 命令创建用户。

    # 请基于真实情况替换下述命令中的账号和密码
    CRTUSRPRF USRPRF(TAPDATA) PASSWORD(Password)
    USRCLS(*USER) TEXT('TapData Connector User') SPCAUT(*AUDIT) INLPGM(*NONE)
    INLMNU(*SIGNOFF) LMTCPB(*YES)
  2. 为刚创建的账号授予写权限。

    在 IBM i 命令行执行下述 CL 命令(请将 TESTCDC 替换为实际业务库名):

    GRTOBJAUT OBJ(TESTCDC) OBJTYPE(*LIB) USER(TAPDATA) AUT(*ALL)
    GRTOBJAUT OBJ(TESTCDC/*ALL) OBJTYPE(*FILE) USER(TAPDATA) AUT(*ALL)

启用 TLS/SSL 连接

  1. 为 Db2 for i 数据库服务启用 TLS/SSL

    Db2 for i 的数据库服务默认会启用两个端口:8471(非 TLS/SSL)与 9471(TLS/SSL),请注意防火墙设置需允许其通信,另外 Database Server、Remote Command Server、Signon Server 服务均需开启 TLS/SSL。

  2. 将 SSL 证书导入到 TapData 所属服务器。

    在 TapData 所属服务器上,执行下述命令将 Db2 for i 证书导入 JDK 默认 truststore 或自定义 PKCS12 文件,该方案可防止中间人攻击,提升安全性。

    # 将 Db2 for i 导出的证书文件 db2i.cert 导入新建 PKCS12 文件
    keytool -import -alias DB2ICERT -file db2i.cert -keystore DB2I_TAP.p12 -deststoretype PKCS12
    # 查看已导入的证书
    keytool -list -v -keystore DB2I_TAP.p12 -storetype PKCS12 -storepass changeit

连接 Db2 for i

  1. 登录 TapData 平台

  2. 在左侧导航栏,单击连接管理

  3. 单击页面右侧的创建

  4. 在弹出的对话框中,搜索并选择 Db2 for i

  5. 在跳转到的页面,根据下述说明填写 Db2 for i 的连接信息。

    Db2 for i 连接示例

    • 连接信息设置

      • 连接名称:填写具有业务意义的独有名称。
      • 连接类型:支持将 Db2 for i 作为源或目标库。
      • 数据库地址:数据库连接地址。
      • 端口:数据库的服务端口,默认为 8471。
      • 服务名:填写数据库(Library)名称。
      • 账号密码:数据库的账号及对应的密码。
      • 日志名称:采集增量日志的日志名称(JRN 对象名称,默认使用当前库的 QSQJRN)。
        • 通过 CREATE SCHEMA 或 CREATE DATABASE 创建的 Library 默认启用 QSQJRN 日志,无需填写。
        • 使用 CRTLIB 等 CL 命令创建的 Library 默认未启用 QSQJRN 日志,需填写自定义日志名称。
      • 存储日志的库名称:日志(Journal)对象存放的 Library 名称,与日志名称中的库名保持一致
      • TapData 工作库名称:用于中转增量数据的临时 Library,默认使用 “TAPLIB”,需具备读写权限,可参照准备工作中的介绍创建,也可指定其他名称。
    • 高级设置

      • 其他连接串参数:额外的连接参数,默认为空。如数据库启用了TLS/SSL 连接,需完成准备工作,并添加 secure=true;tls truststore=/DB2I_TAP.p12;tls truststore password=changeit 参数,注意替换 /DB2I_TAP.p12 为实际的 PKCS12 文件路径。
      • 时区:默认为 0 时区,您也可以根据业务需求手动指定,当配置为其他时区时,会影响不带时区的字段,例如 DATE、TIMESTAMP。
      • 使用共享挖掘挖掘源库的增量日志,可为多个任务共享源库的增量日志,避免重复读取,从而最大程度上减轻增量同步对源库的压力,开启该功能后还需要选择一个外存用来存储增量日志信息。
      • 包含表:默认为全部,您也可以选择自定义并填写包含的表,多个表之间用英文逗号(,)分隔。
      • 排除表:打开该开关后,可以设定要排除的表,多个表之间用英文逗号(,)分隔。
      • Agent 设置:默认为平台自动分配,您也可以手动指定 Agent。
      • 模型加载时间:如果数据源中的模型数量少于 10,000 个,则每小时更新一次模型信息。但如果模型数量超过 10,000 个,则刷新将在您指定的时间每天进行。
      • 开启心跳表:当连接类型为源头源头和目标 时,可开启该功能。TapData 会在源库中创建并定期更新 _tapdata_heartbeat_table(需具备写权限),用于监测连接和任务健康状态。仅当该数据源被任务引用并启动后,心跳任务才会自动启用,您可在该数据源的编辑页面查看其运行情况。
  6. 单击连接测试,测试通过后单击保存

    提示

    如提示连接测试失败,请根据页面提示进行修复。

节点高级特性

在配置数据同步/转换任务时,将 Db2 for i 作为源节点时,为更好满足业务复杂需求,最大化发挥性能,TapData 为其内置更多高级特性能力,您可以基于业务需求配置:

节点高级特性

哈希分片:开启后,全表数据将在全量同步阶段按哈希值拆分为多个分片,并发读取数据,显著提升读取性能,加速全量数据同步,但也会增加数据库负载,最大分片数可在启用开关后手动设置。