随着国家对自主可控的日益重视,目前在各个行业和区域中面临越来越多的国产化,采用有自主知识产权的国产数据库正在成为主流。长期以来,作为拥有纯国产自研背景的 TapData,自是非常重视对于更多国产信创数据库的数据连接器支持,旗下产品已陆续与阿里云、华为云、麒麟软件、优炫数据库、Apache Doris、人大金仓、OceanBase 等国产数据库及操作系统完成产品生态集成认证或产品兼容互认证。
本专题将以 TapData 正在支持的各国产信创数据源为原点,提供详细的数据库同步、迁移教程,为有需求的用户提供更灵活的工具选择。本文将介绍的 TapData 数据源为——Vastbase。
国产化浪潮之下,基础软件自主可控迫在眉睫,越来越多的国内企业开始从 Oracle、MySQL 这一类海外数据库向国产数据库迁移,TapData 的能力恰好满足企业快速、无痛实现迁移的需求,有效推动信创行业国产化建设更进一步。信创领域和基础软件设施的自主可控作为国家重点关注领域,全面国产化替代的进程仍在全速前进中。
同为国产基础软硬件生态的积极建设者,TapData 一直以来都在坚持拓展并持续深化与更多国产信创数据库的生态与战略伙伴关系,以期推动更多行业数据管理解决方案及创新应用的落地,提供更加广泛的基础设施选择及技术服务保障,从而为加速国产软硬件产品的应用普及与协同发展贡献力量。纯国产自研的背景更是为 TapData 的这一发展目标添翼。目前,TapData 已成功实现对主流国产数据库的广泛支持,以海量数据库 Vastbase 为例:
Vastbase 数据库是海量数据基于开源 openGauss 内核开发的企业级关系型数据库。融合多年对各行业应用场景的深入理解,Vastbase 除了具有 openGauss 极致的性能以外,还在原有功能基础上增加了大量 Oracle 兼容特性,并遵循 EAL4+ 标准进行了大幅度的安全增强,同时整合 GIS/流计算等一系列专业应用领域的企业级功能。
因内置成熟的关系型内核,具有良好的通用性,所以 Vastbase G100 适用于各行各业的事务型业务应用,包括金融交易、电子政务、制造业生产线等。此外,由于 Vastbase G100 提供了原生的点、线、面和多面体等多种几何数据类型,大量的几何运算函数,并对 OpenGIS 提供良好支持,也适用于各种空间应用领域,例如:国土规划、地理信息、导航定位、地形勘测、3D模型、管线管理等,应用前景辽阔。
那么,如何高效实现 Vastbase 的数据同步?
一、Vastbase 数据迁移与同步方案
更多详情,参见《海量数据产品文档》:
[https://docs.vastdata.com.cn/zh/docs/exBaseVer4.1/doc/产品介绍/产品介绍.html
]
关于 Vastbase 的迁移和同步,有多种适用的方案和工具可供选择,其中海量数据旗下的一键式异构数据库迁移系统 exBase,以及 TapData 这样的通用型数据同步工具。
关于 exBase
exBase 是由海量数据推出的一键式异构数据库迁移系统。是针对异构数据库迁移痛点定制的的解决方案,集数据库迁移评估、应用迁移评估、自动采集、数据库结构迁移、数据迁移、数据校验等功能于一体,具有流程化、自动化等特点,可协助用户轻松地将数据平滑、安全、完整地迁移至国产关系型数据库中,能够极大减轻迁移人员的工作强度以及迁移周期。
【功能列表】
- 数据库迁移评估
- 应用迁移评估
- 全量迁移
- 增量同步
- 迁移结果校验
- SQL 转换
- 迁移规则管理
【关键特性】
- 数据库支持情况: exBase 兼容多种数据库,源端支持 Oracle、MySQL、DB2、SQL Server、达梦等数据库,目标端支持 Vastbase、GaussDB、openGauss、MySQL、PostgreSQL 等多种开源数据库与商业数据库,还能支持Kafka 作为同步数据目标数据源。
- 智能评估:迁移前对数据库迁移所需的数据库对象移植、数据迁移、应用 SQL 改造等工作进行迁移可行性分析与工作量评估,提供可靠准确的数据帮助用户确认项目迁移可行性,以及协助用户设计最佳迁移方案、复查与调整项目计划,从而降低项目风险、增强项目控制力。
- 自动转换:exBase 能够自动对对象结构与 PL/SQL 对象,包括表、索引、序列、自定义函数、存储过程、外部过程等进行智能转换改写,并移植到新库。应用程序开发人员无需花费大量精力学习新旧库语法差异,更无需通过人力对数百行甚至数千行 PL/SQL 代码进行改写。对于部分较为依赖存储过程、自定义函数进行复杂数据逻辑处理的应用,相当于直接免去了 50% 或以上的开发工作量。
- 一键迁移:全图形操作界面,用户按需一键触发,exBase 即自动执行完整迁移过程。通过标准化迁移流程避免误操作、提升成功率。通过智能化设计有效缩短项目周期,帮助IT部门减少低价值工时占比,从而提升人均价值密度。
关于 TapData
TapData 由钛铂数据自主研发,专注于激发实时数据的应用价值,是一款以低延迟数据移动为核心优势构建的现代数据平台型工具,以出色的 CDC(Change Data Capture,变更数据捕获)能力和集中数据中心架构为关键特性,旨在以新颖的方式解决长期存在的数据集成问题。TapData 内置 100+ 数据连接器,支持多种数据源和目标之间的实时数据集成,且具有高度的可扩展性和自动化特性。其可视化配置界面简化了复杂的数据同步流程,适合企业级的实时数据集成需求。
【功能特性】
- 广泛的数据连接器支持:TapData 支持各类主流数据库,包括商业数据库、开源数据库、云数据库、SaaS 平台数据源、文件数据源等,并支持自定义数据源。
- 数据复制:TapData 的数据同步包括全量同步和实时增量同步两部分,可帮助您快速实现同/异构数据源间的实时同步,适用于数据迁移/同步、数据灾备、读性能扩展等多种业务场景。
- 数据转换:针对复杂的数据处理需求,在数据复制能力的基础上,支持在数据源间增加多种处理节点,快速实现多表合并、数据拆分、字段增减、共享挖掘等高级数据处理需求。
- 数据即服务(DaaS):借助 TapData 的实时数据中心,可以将分散在不同业务系统的数据同步至统一的平台缓存层,可为后续的数据加工和业务提供基础数据,从根源上避免直接读取/操作源库的数据带来的的性能影响,从而构建一致、实时的数据平台,连通数据孤岛。
【关键优势】
- 丰富的数据源与目标支持与全面的数据库支持
- 零代码界面化操作与零代码可视化拖拽操作
- 灵活定义数据处理逻辑
- 可视化任务运行监控
- 共享日志挖掘
- 增量数据实时校验
- 高可用与容错机制
- 创新的实时数据同步技术
- 统一的数据服务平台
- 完美支持 SQL -> NoSQL
- 充分设计的安全保障
二、TapData 高效同步教程:以 Vastbase → MySQL 为例
更多详情,参见《TapData 帮助文档-连接数据源-自建数据库 Vastbase》:
https://docs.tapdata.net/prerequisites/on-prem-databases/vastbase/
完成 TapData Agent 部署后,即可跟随以下教程在 TapData 中添加 Vastbase 数据连接(支持版本:Vastbase G100 2.2 版本),后续可将其作为源或目标库来构建数据管道。这里我们将以 Vastbase 为数据源,MySQL 为数据目标进行模拟演示。(*涉及工具版本为 TapData 本地部署版)
版本指路:
点击登录 TapData Cloud
申请试用 TapData 本地部署版
增量数据读取原理
为实现增量数据的读取,TapData 需借助 Vastbase 的逻辑解码功能,提取提交到事务日志中的更改,并通过插件以用户友好的方式处理这些更改。支持的变更数据捕获(CDC)如下:
- 逻辑解码(Logical Decoding):用于从 WAL 日志中解析逻辑变更事件
- 复制协议(Replication Protocol):提供了消费者实时订阅(甚至同步订阅)数据库变更的机制
- 快照导出(Export Snapshot):允许导出数据库的一致性快照(pg_export_snapshot)
- 复制槽(Replication Slot):用于保存消费者偏移量,跟踪订阅者进度。
*提示:在本文案例中,我们将借助 Vastbase 内置 wal2json 逻辑解码插件,使用该插件可以访问 INSERT 和 UPDATE 生成的元组,解析 WAL 中的内容,从而获取数据的增量变更。
① 准备工作(作为源库)
- 以管理员身份登录 Vastbase 数据库。
- 创建用户并授权。
a. 执行下述格式的命令,创建用于数据同步/开发任务的账号。
CREATE USER username WITH PASSWORD 'password';
- username:用户名。
password:密码。
b. 执行下述格式的命令,授予账号权限。
-- 进入要授权的数据库
\c database_name
-- 授予目标 Schema 的表读取权限
GRANT SELECT ON ALL TABLES IN SCHEMA schema_name TO username;
-- 授予目标 Schema 的 USAGE 权限
GRANT USAGE ON SCHEMA schema_name TO username;
-- 授予复制权限,仅需读取数据库的全量数据,则无需执行
ALTER USER username REPLICATION;
- database_name:数据库名称。
- schema_name:Schema 名称。
- username:用户名。
*提示:如仅需读取 Vastbase 的全量数据(不包含增量变更),则无需执行后续步骤。
- 执行下述格式的命令,修改复制标识为 FULL(使用整行作为标识),该属性决定了当数据发生 UPDATE/DELETE 时,日志记录的字段。
ALTER TABLE 'schema_name'.'table_name' REPLICA IDENTITY FULL;
- schema_name:Schema 名称。
- table_name:表名称。
- 执行下述命令,修改相关参数以支持 wal2json 逻辑解码能力。
ALTER SYSTEM SET wal_level to logical;
ALTER SYSTEM SET max_wal_senders to 10;
ALTER SYSTEM SET max_replication_slots to 10;
- 在业务低峰期重启数据库实例。
- (可选)测试日志插件。
a. 连接 Vastbase 数据库,切换至需要同步的数据库并创建一张测试表。
-- 假设需要同步的数据库为 demodata,模型为 public
\c demodata
CREATE TABLE public.test_decode
(
uid integer not null
constraint users_pk
primary key,
name varchar(50),
age integer,
score decimal
);
b. 创建 Slot 连接,以 wal2json 插件为例。
SELECT * FROM pg_create_logical_replication_slot('slot_test', 'wal2json');
c. 对测试表插入一条数据。
INSERT INTO public.test_decode (uid, name, age, score)
VALUES (1, 'Jack', 18, 89);
d. 监听日志并查看返回结果,是否有刚才插入操作的信息。
SELECT * FROM pg_logical_slot_peek_changes('slot_test', null, null);
返回示例如下(竖向显示):
lsn | 0/3C91A10
xid | 16914
data | {"change":[{"kind":"insert","schema":"public","table":"test_decode","columnnames":["uid","name","age","score"],"columntypes":["integer","varchar(50)","integer","numeric"],"columnvalues":[1,"Jack",18,89]}]}
e. 确认无问题后,可销毁 Slot 连接并删除测试表。
SELECT * FROM pg_drop_replication_slot('slot_test');
DROP TABLE public.test_decode;
- (可选)如需使用最后更新时间戳的方式进行增量同步,您需要执行下述步骤。
a. 在源数据库中,执行下述命令创建公共函数,需替换 schema 名称。
CREATE OR REPLACE FUNCTION schema_name.update_lastmodified_column()
RETURNS TRIGGER LANGUAGE plpgsql AS
BEGIN
NEW.last_update = now();
RETURN NEW;
END;
;
b. 创建字段和 trigger,每个表均需执行一次,例如表名为** mytable**。
// 创建 last_update 字段
ALTER TABLE schema_name.mytable ADD COLUMN last_udpate timestamp DEFAULT now();
// 创建 trigger
CREATE TRIGGER trg_uptime BEFORE UPDATE ON schema_name.mytable FOR EACH ROW EXECUTE PROCEDURE
update_lastmodified_column();
② 创建 Vastbase 的连接
- 进入 TapData 控制台,在左侧导航栏,单击连接管理。
- 单击页面右侧的创建,在弹框中,搜索并选择 Vastbase。
- 在跳转到的页面,根据下述说明填写 Vastbase 连接信息:
连接信息设置
- 连接名称:填写具有业务意义的独有名称。
- 连接类型:支持将 Vastbase 作为源或目标库。
- 地址:数据库连接地址。
- 端口:数据库的服务端口,默认为 5432。
- 数据库:数据库名称,即一个连接对应一个数据库,如有多个数据库则需创建多个数据连接。
- 模型:Schema 名称。
- 额外参数:额外的连接参数,默认为空。
- 账号:数据库的账号。
- 密码:数据库账号对应的密码。
- 日志插件:如需读取 Vastbase 的数据变更,实现增量数据同步,您需要根据准备工作的指引,完成插件的安装。
高级设置
- 额外参数:额外的连接参数,默认为空。
- 时区:默认为数据库所用的时区,您也可以根据业务需求手动指定。
- 共享挖掘:挖掘源库的增量日志,可为多个任务共享源库的增量日志,避免重复读取,从而最大程度上减轻增量同步对源库的压力,开启该功能后还需要选择一个外存用来存储增量日志信息。
- 包含表:默认为全部,您也可以选择自定义并填写包含的表,多个表之间用英文逗号(,)分隔。
- 排除表:打开该开关后,可以设定要排除的表,多个表之间用英文逗号(,)分隔。
- Agent 设置:默认为平台自动分配,您也可以手动指定 Agent。
- 模型加载频率:数据源中模型数量大于 1 万时,TapData 将按照设置的时间定期刷新模型。
- 开启心跳表:当连接类型选择为源头和目标、源头时,支持打开该开关,由 Tapdata 在源库中创建一个名为 _tapdata_heartbeat_table 的心跳表并每隔 10 秒更新一次其中的数据(数据库账号需具备相关权限),用于数据源连接与任务的健康度监测。
- SSL 设置:选择是否开启 SSL 连接数据源,可进一步提升数据安全性,开启该功能后还需要上传 CA 文件、客户端证书、密钥填写客户端密码。
- 单击连接测试,测试通过后单击保存:
*提示:如提示连接测试失败,请根据页面提示进行修复。
③ 创建 MySQL 的连接
- 参照 Vastbase 连接创建流程,完成 MySQL 连接配置信息填写,添加数据目标:
- 测试 MySQL 的连接:
④ 创建数据复制/开发任务
- 左侧导航栏点击数据复制,并点击右侧创建:
- 进入 DAG 页面,构建数据复制任务,通过拖拉拽的方式添加源与目标节点,并连接源与目标
- 单击源与目标节点,即可按需对二者进行设置:
- 保存任务
⑤ 任务启动与监控
- 启动任务,任务全量同步正常运行:
- 增量同步开启
以上,便是借助 TapData 快速实现 Vastbase 到 MySQL 的全、增量同步的模拟教程。
后续,我们还将陆续输出 GaussDB、人大金仓 Kingbase、神州通用、南大通用、OpenGauss、瀚高、TDSQL 等热门国产数据源的连接教程,欢迎关注 TapData 官方公众号,了解更多。
【推荐阅读】
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。