数据集成提供了达梦 DM 的单表读取和写入能力,本文为您介绍使用达梦 DM 进行实时数据同步的前置环境配置以及当前能力支持情况。
支持版本
目前数据集成已支持达梦 DM 单表实时读取和写入,使用实时同步能力需遵循以下版本限制:
类型 | 版本 |
达梦DM | 7、8 |
使用限制
目前仅支持单表实时读取和写入,不支持整库任务。
仅支持 At-least-once 语义,需要依赖目标端去重能力保证数据唯一性。
DM 作为目标端时不支持根据源表结构一键创建 DM 目标端表结构,需提前在 DM 数据库建好目标表。
数据库环境准备
开启归档模式
1. 使用如下语句核对 ARCH_INI 和 RLOG_APPEND_LOGIC 参数是否正确设置,保证数据库已开启归档模式:
select para_name, para_valuefrom v$dm_iniwhere para_name in ('ARCH_INI','RLOG_APPEND_LOGIC');
2. 若显示参数为0,则需要按照如下步骤设置归档模式及修改参数。
2.1 修改 dm.ini 中的参数,如下:
ARCH_INI = 1RLOG_APPEND_LOGIC = 1
2.2 dmarch.ini 需要配置本地归档,举例如下:
[ARCHIVE_LOCAL1]ARCH_TYPE = LOCALARCH_DEST = d:\\dmdbms\\archARCH_FILE_SIZE = 128 #单位MbARCH_SPACE_LIMIT = 0 #单位Mb,0 表示无限制,范围1024~4294967294MARCH_INI和RLOG_APPEND_LOGIC
2.3 参数说明如下:
开启自动事务提交
大多数数据库管理工具,默认情况下,是开启了自动事务提交的,即执行了一句 Select 、Insert 、Delete 、Update 之后会自动执行 commit 操作。但达梦数据库管理工具不会,无论是命令行工具 disql,还是可视化管理工具都是默认执行了不会自动提交的,需要手动提交 commit 操作。
方式1:管理工具菜单选择窗口 > 选项,单击查询分析器,勾选自动提交。
方式2:SQL 命令方式。
临时修改可以通过如下方式配置,下面为官方文档说明:
1. 设置当前 session 是否对修改的数据进行自动提交。
ON:表示打开自动提交,所有执行的 SQL 语句的事务将自动进行提交。
OFF:表示关闭自动提交,所有执行的 SQL 语句的事务将由用户显式提交,为默认设置。
SET AUTO[COMMIT] <ON|OFF>
权限授予
grant create session to my_user;grant select on all_users to my_user ;grant select on all_objects to my_user ;grant select on all_tab_cols to my_user ;grant select on all_indexes to my_user ;grant select on dba_objects to my_user ;grant select on V$LOGMNR_CONTENTS to my_user ;grant select on V$ARCHIVED_LOGS to my_user ;
单表读取节点配置
参数 | 描述 |
数据来源 | 选择达梦 DM 数据源。 |
库 | 支持选择或者手动输入需读取的库名称。 默认将数据源绑定的数据库作为默认库,其他数据库需手动输入库名称。 当数据源网络不联通导致无法直接拉取库信息时,可手动输入数据库名称。在数据集成网络连通的情况下,仍可进行数据同步。 |
Schema | 支持选择或者手动输入需读取该数据源下可用的 Schema。 |
表 | 支持选择或者手动输入需读取的表名称。 分表情况下,可在达梦 DM 源端支持选择或输入多个表名称,多个表需保证结构一致。 分表情况下,支持配置表序号区间。例如 'table_[0-99]' 表示读取 'table_0'、'table_1'、'table_2' 直到 'table_99' ; 如果您的表数字后缀的长度一致,例如 'table_000'、'table_001'、'table_002' 直到 'table_999',您可以配置为 '"table": ["table_00[0-9]", "table_0[10-99]", "table_[100-999]"]' 。 当数据源网络不联通导致无法直接拉取表信息时,可手动输入表名称。在数据集成网络连通的情况下,仍可进行数据同步。 |
添加分库分表 | 适用于分库场景,单击后可配置多个数据源、库及表信息。分库分表场景下需保证所有表结构一致,任务配置将默认展示并使用第一个表结构进行数据获取。 |
表主键 | 选择一个字段作为写入表的主键。 |
读取模式 | 全量 + 增量:数据同步分为全量和增量同步阶段,全量阶段完成后任务进入增量阶段。全量阶段将同步库内历史数据,增量阶段从任务启动后 binlog cdc 的位点开始同步。 仅增量:仅从任务启动后的 binlog cdc 位点开始同步数据。 |
参数(选填) | 可根据业务需求配置参数。 |
实时单表写入节点配置
参数 | 说明 |
数据去向 | 需要写入的达梦 DM 数据源。 |
库 | 支持选择、或者手动输入需写入的库名称 默认将数据源绑定的数据库作为默认库,其他数据库需手动输入库名称。 当数据源网络不联通导致无法直接拉取库信息时,可手动输入数据库名称。在数据集成网络连通的情况下,仍可进行数据同步。 |
Schema | 支持选择、或者手动输入需要写入的 达梦 DM 数据模式。 当数据源网络不联通导致无法直接拉取 Schema 信息时,可手动输入 Schema 名称。在数据集成网络连通的情况下,仍可进行数据同步。 |
表 | 支持选择、或者手动输入需写入的表名称。 当数据源网络不联通导致无法直接拉取表信息时,可手动输入表名称。在数据集成网络连通的情况下,仍可进行数据同步。 |
高级设置(选填) | 可根据业务需求配置参数。 |
支持的数据类型
读取
达梦 DM 读取支持的数据类型及转换对应关系如下(在处理达梦 DM 时,会先将达梦 DM 数据源的数据类型和数据处理引擎的数据类型做映射):
DM 类型 | 内部类型 | 备注 |
INT | INT | |
TINYINT | TINYINT | TINYINT(1) 映射到 BOOLEAN 需要增加选项支持 TINYINT(1) 可以映射到 bool 或者 tinyint |
SMALLINT | SMALLINT | |
BIGINT | Long | |
REAL | DOUBLE | |
FLOAT | FLOAT | |
DOUBLE | DOUBLE | |
DECIMAL | DECIMAL | 采用用户数据库实际的精度 p<=38 映射到 DECIMAL 38 < p <= 65 时映射到 String |
CHAR | STRING | |
VARCHAR | STRING | |
TEXT | STRING | |
DATE | DATE | |
TIMESTAMP | TIMESTAMP | |
写入
达梦 DM 写入支持的数据类型及转换对应关系如下:
内部类型 | DM 类型 |
INT | INT,NUMBER,INTEGER |
TINYINT | TINYINT(3) |
SMALLINT | SMALLINT |
BIGINT | BIGINT |
FLOAT | FLOAT |
DOUBLE | REAL,DOUBLE,DECIMAL,DOUBLE PRECISION |
BOOLEAN | BIT(1) |
CHAR | CHARACTER(1) |
VARCHAR | VARBINARY,BYTE,VARCHAR(8188),VARCHAR2(8188),LONGVARCHAR(2147483647) |
TEXT | CLOB,BINARY,TIME WITH TIME ZONE |
TINYTEXT | TIME |
DATE | DATE,DATETIME,DATETIME WITH TIME ZONE |
TIMESTAMP | TIMESTAMP,TIMESTAMP WITH LOCAL TIME ZONE |
BLOB | BLOB,IMAGE,LONGVARBINARY |