Dameng(达梦)
达梦数据库管理系统是达梦公司开发的新一代大型通用关系型数据库,全面支持 SQL 标准和主流编程语言接口/开发框架。行列融合存储技术,在兼顾 OLAP 和 OLTP 的同时,满足 HTAP 混合应用场景。本文将介绍如何在 TapData 中添加 Dameng 数据源,后续可将其作为源或目标库来构建数据管道。
支持的版本与架构
DM 7.x 和 8.x 版本(单机架构)
支持的数据类型
| 类别 | 数据类型 |
|---|---|
| 字符串 | VARCHAR, VARCHAR2, CHAR, CHARACTER, LONGVARCHAR, TEXT, CLOB |
| 数值 | NUMBER, NUMERIC, DECIMAL, DEC, INTEGER, INT, SMALLINT, BIGINT, TINYINT, DOUBLE, DOUBLE PRECISION, REAL |
| 日期和时间 | DATE, TIME, TIMESTAMP, TIMESTAMP WITH TIME ZONE, TIMESTAMP WITH LOCAL TIME ZONE, TIME WITH TIME ZONE |
| 二进制 | BINARY, VARBINARY, LONGVARBINARY, BLOB, BYTE |
| 其他 | BIT、IMAGE |
支持同步的操作
-
DML:INSERT、UPDATE、DELETE
提示将达梦数据库作为同步目标时,您还可以通过任务节点的高级配置,选择写入策略:插入冲突场景下,可选择转为更新或丢弃;更新失败场景下,可选择转为插入或仅打印日志。
-
DDL:ADD COLUMN、CHANGE COLUMN、DROP COLUMN、RENAME COLUMN
注意事项
- 增量日志挖掘利用官方功能加载日志文件至临时视图,过滤追踪表的 DML 和 DDL 日志,类似于 Oracle 的 LogMiner,会占用一些数据库性能。若同步任务多且数据表分散,建议使用共享挖掘以降低数据库负载。
- 当数据库日志空间不足时,可以使用命令
SF_ARCHIVELOG_DELETE_BEFORE_TIME(SYSDATE-1);来清理一天前的归档日志,从而仅保留最近一天的日志记录,您也可以根据需要指定保留的天数。
准备工作
在连接达梦数据库前,您还需要完成数据库账号的授权等准备工作:
作为源库
-
以拥有 DBA 权限的身份登录达梦数据库。
-
依次执行下述格式的命令,创建用于数据复制/转换任务的用户。
CREATE USER username IDENTIFIED BY "password" DEFAULT TABLESPACE table_space_name;- username:用户名。
- pass_word:密码。
- table_space_name:表空间名称。
-
为刚创建的账号授予权限,您也可以基于业务需求自定义权限控制。
- 仅读取全量数据
- 读取全量+增量数据
-- 替换下述命令中的 username 为真实的用户名,同 Schema 下无需授权
GRANT SELECT ANY TABLE TO username;-- 替换下述命令中的 username 为真实的用户名
-- 查询表
GRANT SELECT ANY TABLE TO username;
-- 查询数据库初始化加载信息记录表
GRANT SELECT ON V$DM_INI TO username;
-- 查询归档日志信息
GRANT SELECT ON V$ARCHIVED_LOG TO username;
-- 查询归档日志总体信息
GRANT SELECT ON V$RLOG TO username;
-- 查询归档日志分析视图
GRANT SELECT ON V$LOGMNR_CONTENTS TO username;
-- 查询会话视图
GRANT SELECT ON V$SESSIONS TO username;
-- 查询事务视图
GRANT SELECT ON V$TRX TO username; -
如需获取源库的数据变更以实现增量同步,您还需要跟随下述步骤开启数据库的归档功能和归档日志。
-
开启归档日志,详细参数介绍,见达梦官网。
提示您也可以执行
SELECT para_name, para_value FROM v$dm_ini WHERE para_name IN ('ARCH_INI','RLOG_APPEND_LOGIC');命令来查看是否已开启该功能,返回结果中, PARA_VALUE 列的值为 1 表示已开启,可跳过本步骤。-- 修改数据库为 MOUNT 状态
ALTER DATABASE MOUNT;
-- 配置本地归档,DEST 指定的目录不存在时会自动创建
-- FILE_SIZE 表示单个归档文件大小,单位为 MB;SPACE_LIMIT 表示空间大小限制,取值为 0 表示不限制,后续可通过命令定期清理
ALTER DATABASE ADD ARCHIVELOG 'DEST = /bak/dmdata/dameng, TYPE = local, FILE_SIZE = 128, SPACE_LIMIT = 0';
-- 开启归档模式
ALTER DATABASE ARCHIVELOG;
-- 修改数据库为 OPEN 状态
ALTER DATABASE OPEN; -
开启附加日志。
-- 开启附加日志,推荐取值为 2,即不论是否有主键列,记录 UPDATE 和 DELETE 操作时包含所有列的信息
ALTER SYSTEM SET 'RLOG_APPEND_LOGIC'=2 MEMORY;
-
作为目标库
-
以拥有 DBA 权限的身份登录达梦数据库。
-
依次执行下述格式的命令,创建用于数据复制/转换任务的用户。
CREATE USER username IDENTIFIED BY "password" DEFAULT TABLESPACE table_space_name;- username:用户名。
- password:密码。
- table_space_name:表空间名称。
-
为刚创建的账号授予权限,您也可以基于业务需求自定义权限控制。
-- 替换下述命令中的 username 为真实的用户名
GRANT CREATE TABLE, CREATE INDEX TO username;
连接 Dameng(达梦)
-
在左侧导航栏,单击连接管理