Db2
TapData Cloud 为您提供了云端服务,适合需要快速部署、低前期投资场景,帮助您更好地专注于业务发展而非基础设施管理,注册账号即可领取免费的 Agent 实例,欢迎试用。TapData Enterprise 可部署在您的本地数据中心,适合对数据敏感性或网络隔离有严格要求的场景,可服务于构建实时数仓,实现实时数据交换,数据迁移等场景。IBM Db2 是一种关系数据库,可为存储和管理结构化数据提供高性能、可扩展性和可靠性。TapData 支持将 Db2 作为源和目标库,帮助您快速构建数据链路。接下来,我们将介绍如何在 TapData 平台中连接 Db2 数据源。
支持版本与架构
类别 | 说明 |
---|---|
版本 | Db2 9.7~11.x,其中 Db2 11.x 版本涵盖了更多基础功能的验证和支持 支持多种平台部署,包括 Linux、UNIX、Windows、AIX,以及 AS400 |
架构 | 无限制 |
支持数据类型
类别 | 数据类型 |
---|---|
字符串与文本 | VARCHAR、CHARACTER、CLOB、LONG VARCHAR |
数值 | INTEGER、DECIMAL、BIGINT、SMALLINT、DOUBLE、REAL |
日期和时间 | TIMESTAMP、DATE、TIME |
布尔 | BOOLEAN |
二进制大对象 | BLOB |
XML | XML |
支持同步的操作
DML:INSERT、UPDATE、DELETE
提示将 Db2 作为同步的目标场景下,支持在插入冲突时转为更新操作(类似 UPSERT 功能)。
DDL:ADD COLUMN、CHANGE COLUMN、DROP COLUMN、RENAME COLUMN
功能限制
- 在 Db2 作为源库执行增量数据同步的场景中,一旦对 Db2 数据库执行了 DDL 操作,需要紧接着执行下述存储过程,否则可能导致数据同步失败等意外情况。
CALL SYSPROC.ADMIN_CMD('REORG TABLE <schema>.<table>')
- 在 DB2 的 ReadLog 规模非常大的情况下,基于指定时间的增量同步可能会遇到初次查找 LRI 缓慢的问题,可能导致进入增量同步的时间较长。
- 由于 DB2 数据库中存在类似可变长字段的情况,在 DML 操作过程中可能会触发空间扩展,从而导致任务监控或日志中出现与预期不符的操作类型(如更新事件中同时出现插入和删除)。此场景下,虽然日志表现可能与预期不同,但不会影响数据的准确性。
- 部署裸日志服务可用于解析 Db2 的增量数据变更,在该服务部署完毕后,需要为其配置与 Db2 数据库相同的国家码语言码。
# 语言码 UTF-8
db2set db2codepage=1208
# 语言码 GBK
db2set db2codepage=1386
# 国家码
db2set db2country=86
注意事项
获取增量数据变更时,由于会周期性调用 Db2 数据库的 ReadLog API,因此对数据库会产生一些负载,并且占用网络带宽和磁盘 I/O 资源。
准备工作
在连接 Db2 数据库前,您还需要完成数据库账号的授权等准备工作,本文以 Db2 数据库部署在 Linux 平台为例演示相关操作示例。
作为源库
创建用户。
以 Linux 平台为例,登录至依次执行下述格式的命令创建用于登录 Db2 数据库的用户并设置密码。
-- 请替换 username 为您要创建的用户名
sudo useradd username
sudo passwd username为刚创建的账号授予权限。
以具有 DBA 权限的用户身份登录 Db2 数据库。
执行下述格式的命令为用户授予权限,您也可以基于业务需求自定义更精细化的权限控制,更多介绍,见 GRANT TABLE。
- 全量数据同步
- 增量数据同步
-- 请分别替换 username、schema_name 为您要授权的用户名和 Schem 名称
GRANT ON SCHEMA schema_name TO USER username;-- 切换至根容器
-- 请替换 username 为要授权的用户名
GRANT DBADM TO username;提示由于增量采集依赖于 Db2 官方的 ReadLog API,因此需要授予系统超管或数据库超管权限。
如需增量数据同步,您需要为联系 TapData 团队,获取并部署裸日志采集服务。
提示为进一步简化使用流程,该服务启动后,会自动执行
ALTER TABLE <schema>.<table> DATA CAPTURE CHANGES;
为您开启表级数据变更捕获能力。
作为目标库
创建用户。
以 Linux 平台为例,登录至依次执行下述格式的命令创建用于登录 Db2 数据库的用户并设置密码
-- 请替换 username 为您要创建的用户名
sudo useradd username
sudo passwd username为刚创建的账号授予权限。
以具有 DBA 权限的用户身份登录 Db2 数据库。
执行下述格式的命令,为用户授予指定 Schema 的对象管理和数据读写权限。
-- 请分别替换 schema_name、username 为您要创建的 Schem 名称和用户名
GRANT CREATEIN, ALTERIN, DROPIN ON SCHEMA schema_name TO USER username;提示您也可以基于业务需求自定义更精细化的权限控制,更多介绍,见 GRANT TABLE。
添加数据源
在左侧导航栏,单击连接管理。
单击页面右侧的创建。
在弹出的对话框中,搜索并选择 Db2。
在跳转到的页面,根据下述说明填写 Db2 的连接信息。
连接信息设置
- 连接名称:填写具有业务意义的独有名称。
- 连接类型:支持将 Db2 作为源或目标库。
- 数据库地址:数据库连接地址。
- 端口:数据库的服务端口,默认为 50001。
- 服务名:填写数据库名称。
- 模型:模型(Schema) 名称,即一个连接对应一个 Schema,如需连接多个 Schema 则需创建多个数据连接。
- 其他连接串参数:额外的连接参数,默认为空。
- 账号、密码:数据库的账号及对应的密码。
- 裸日志服务器地址、裸日志服务器端口:请联系 TapData 团队,获取并部署裸日志采集组件,实现 Db2 增量数据的捕获,默认服务端口为 50051。
高级设置
- 时区:默认为 0 时区,如果更改为其他时区,数据同步的时间将受到影响,尤其是不带时区的字段(如 TIMESTAMP 和 TIME),而 DATE 类型则不会受到影响。
- 您也可以根据业务需求手动指定,当配置为其他时区时,会影响不带时区的字段,例如 DATE、TIMESTAMP。
- 使用共享挖掘:挖掘源库的增量日志,可为多个任务共享源库的增量日志,避免重复读取,从而最大程度上减轻增量同步对源库的压力,开启该功能后还需要选择一个外存用来存储增量日志信息。
- 包含表:默认为全部,您也可以选择自定义并填写包含的表,多个表之间用英文逗号(,)分隔。
- 排除表:打开该开关后,可以设定要排除的表,多个表之间用英文逗号(,)分隔。
- Agent 设置:默认为平台自动分配,您也可以手动指定 Agent。
- 模型加载频率:当数据源中模型数量小于1万时,TapData 将每小时更新一次模型;当数据源中模型数量大于 10,000 时,会每天按照指定的时间进行模型刷新。
- 开启心跳表:当连接类型选择为源头和目标、源头时,支持打开该开关,由 TapData 在源库中创建一个名为 _tapdata_heartbeat_table 的心跳表并每隔 10 秒更新一次其中的数据(数据库账号需具备相关权限),用于数据源连接与任务的健康度监测。提示
数据源需在数据复制/开发任务引用并启动后,心跳任务任务才会启动,此时您可以再次进入该数据源的编辑页面,即可单击查看心跳任务。
单击连接测试,测试通过后单击保存。
提示如提示连接测试失败,请根据页面提示进行修复。