信创那些事儿——国产信创数据库 TDengine 数据同步
TDengine 是一款专为物联网、工业互联网等场景设计并优化的大数据平台,它能安全高效地将大量设备、数据采集器每天产生的高达 TB 甚至 PB 级的数据进行汇聚、存储、分析和分发,对业务运行状态进行实时监测、预警,提供实时的商业洞察。其核心模块是高性能、集群开源、云原生、极简的时序数据库 TDengine OSS。此外,作为 2024 年 8 月墨天轮中国数据库流行度排行榜上的时序数据库 Top
TDengine 是一款专为物联网、工业互联网等场景设计并优化的大数据平台,它能安全高效地将大量设备、数据采集器每天产生的高达 TB 甚至 PB 级的数据进行汇聚、存储、分析和分发,对业务运行状态进行实时监测、预警,提供实时的商业洞察。其核心模块是高性能、集群开源、云原生、极简的时序数据库 TDengine OSS。
此外,作为 2024 年 8 月墨天轮中国数据库流行度排行榜上的时序数据库 Top1,TDengine 广泛适用于 IoT、工业互联网、车联网、IT 运维、能源、金融证券等领域场景。截至目前,已在 GitHub 上获得 23.1k Star,曾多次在 GitHub 全球趋势排行榜上排名第一,全球运行的 TDengine 实例数超过 588.4k,用户遍布全球。
一、TDengine 数据迁移与同步方案
更多详情,参见《TDengine 产品文档》:https://docs.taosdata.com/
关于 TDengine 的迁移和同步,有多种适用的方案和工具可供选择,其中比较常见的包括手动方案,以及基于 DataX 或是 TapData 这一类数据同步工具的现代化数据解决方案。
手动迁移与同步
手动迁移与同步是最基本的方案,通常适用于小规模数据迁移或一次性数据迁移任务。该方法涉及从源数据库导出数据,通过脚本或工具将数据转换为 TDengine 兼容的格式,最后将数据导入 TDengine。尽管手动方案可以完全控制迁移过程,但其操作也相对复杂,容易出现错误,且不适合大规模数据迁移或需要频繁同步的场景。
手动迁移数据需要注意以下两个问题:
1)在磁盘中存储导出数据时,磁盘需要有足够的存储空间以便能够充分容纳导出的数据文件。为了避免全量数据导出后导致磁盘文件存储紧张,可以采用部分导入的模式,对于归属于同一个超级表的时间线优先导出,然后将导出部分的数据文件导入到 TDengine 系统中。
2)在系统全负载运行下,如果有足够的剩余计算和 IO 资源,可以建立多线程的导入机制,最大限度地提升数据迁移的效率。考虑到数据解析对于 CPU 带来的巨大负载,需要控制最大的并行任务数量,以避免因导入历史数据而触发的系统整体过载。
基于数据同步工具的解决方案
- DataX
DataX 是阿里云 DataWorks 数据集成的开源版本,支持多种数据源与目标之间的数据迁移与同步。通过配置 DataX,可以实现从关系型数据库、Hadoop、NoSQL 等多种数据源向 TDengine 的数据同步。DataX 提供了简洁的 JSON 配置方式,用户只需定义源数据、目标数据和转换逻辑即可。DataX 适合需要频繁同步且数据量较大的场景,但对实时性要求较高的场景支持有限。
除此之外,为了方便历史数据的迁移工作,TDengine 为 DataX 提供了适配 TDengine 3.0 的插件—— TDengine30Reader 和 TDengine30Writer,能够将数据自动写入到 TDengine 中,需要注意的是 DataX 的自动化数据迁移只能够支持单值模型的数据迁移过程。目前可以做到 OpenTSDB、MySQL、TDengine(Time Series DataBase,TSDB) 等不同数据源之间的数据迁移。
TDengine30Reader 提供的功能:
1、支持通过 SQL 进行数据筛选;
2、根据时间间隔进行任务切分;
3、支持 TDengine 的全部数据类型;
4、支持批量读取,通过 batchSize 参数控制批量拉取结果集的大小,提高读取性能。
TDengine30Writer 支持的功能:
1、支持 OpenTSDB 的 json 格式的行协议,使用 TDengine 的 schemaless 方式写入 TDengine。
2、支持批量写入,通过 batchSize 参数控制批量写入的数量,提高写入性能。
- TapData
TapData 专注于激发实时数据的应用价值,是一款以低延迟数据移动为核心优势构建的现代数据平台型工具,以出色的 CDC(Change Data Capture,变更数据捕获)能力和集中数据中心架构为关键特性,旨在以新颖的方式解决长期存在的数据集成问题。TapData 内置 100+ 数据连接器,支持多种数据源和目标之间的实时数据集成,且具有高度的可扩展性和自动化特性。其可视化配置界面简化了复杂的数据同步流程,适合企业级的实时数据集成需求。
- DataX vs Dataworks vs TapData
二、TapData 高效同步教程:以 TDengine → RDS MySQL 为例
更多详情,参见《TapData 帮助文档-连接数据源-自建数据库 TDengine》:
https://docs.tapdata.net/prerequisites/on-prem-databases/tdengine
完成 TapData Agent 部署后,即可跟随以下教程在 TapData 中添加 TDengine 数据连接(支持版本:TDengine 3.x),后续可将其作为源或目标库来构建数据管道。这里我们将以 TDengine 为数据源,RDS MySQL 为数据目标进行模拟演示。(*涉及工具版本为 TapData 本地部署版)
① 前提条件
由于 TapData 采用 REST 方式连接至 TDengine,在配置连接前,您需要在 TDengine 所属服务器上执行 sudo systemctl start taosadapter 命令开启 taosAdapter 服务。
*提示:如希望 TapData 读取 TDengine 的增量数据,您还需要在 Agent 所属服务器上安装 TDengine 客户端驱动。
② 创建 TDengine 的连接
1、进入 TapData 控制台,在左侧导航栏,单击连接管理。
2、单击页面右侧的创建,在弹框中,搜索并选择 TDengine。
3、在跳转到的页面,根据下述说明填写 PolarDB 连接信息:
-
连接名称:填写具有业务意义的独有名称。
-
连接类型:支持同时作为源或目标。
-
地址:填写数据库的连接地址。
-
端口:填写 taosAdapter 的服务端口,默认为 6041。
-
数据库:数据库名称,一个连接对应一个数据库,如有多个数据库则需创建多个数据连接。
-
账号、密码:分别填写数据库账号和密码。
-
连接参数:额外的连接参数,默认为空。
-
时区:默认为数据库所用的时区,您也可以根据业务需求手动指定。
-
包含表:默认为全部,您也可以选择自定义并填写包含的表,多个表之间用英文逗号(,)分隔。
-
排除表:打开该开关后,可以设定要排除的表,多个表之间用英文逗号(,)分隔。
-
Agent 设置:默认为平台自动分配,您也可以手动指定 Agent。
4、单击连接测试,测试通过后单击保存:
③ 创建 RDS MySQl 的连接
1、参照 TDengine 连接创建流程,完成 RDS MySQL 连接配置信息填写,添加数据目标:
2、测试 RDS MySQL 的连接:
④ 创建数据复制/开发任务
1、左侧导航栏点击数据复制,并点击右侧创建:
2、进入 DAG 页面,构建数据复制任务,通过拖拉拽的方式添加源与目标节点,并连接源与目标
3、单击源与目标节点,即可按需对二者进行设置:
4、保存任务
⑤ 任务启动与监控
1、启动任务,任务全量同步正常运行:
2、增量同步开启
以上,便是借助 TapData 快速实现 TDengine 到 RDS MySQL 的全、增量同步的模拟教程。
更多推荐
所有评论(0)