使用这个开源工具轻松同步数据库
创始人
2024-03-02 15:09:13
0

开源的 Apache SeaTunnel 项目是一个数据整合平台,可以很容易地实现数据同步。

变更数据捕获 Change Data Capture (CDC)使用服务端代理来记录、添加、更新和删除对数据表的各种操作。它以一种易用的关系型格式提供了数据变化的细节信息。它可以捕获将更改应用于目标环境中的已修改行所需的列信息和元数据。这些信息保存在一个与被跟踪的源表的列结构相对应的变化表内。

捕获变更的数据可不是一件容易的事。不过,有一个开源项目 —— Apache SeaTunnel,它是一个数据整合平台,它提供的 CDC 功能的设计理念和功能集使这些捕获成为可能,其功能包括上文提到的,超越了现有产品的解决方案。

使用场景

CDC 的经典应用是异质数据库之间的数据同步或备份。你可以在 MySQL、PostgreSQL、MariaDB 和类似的数据库间进行数据同步。另外一个例子,你也可以将数据同步到应该全文搜索引擎。借助 CDC,你可以基于 CDC 捕获的数据创建备份。

如果设计得当,数据分析系统通过订阅目标数据表的变化情况获取需要处理的数据,而不需要将分析过程嵌入已有系统。

在微服务间共享数据状态

微服务现在很流行,但是在微服务间共享信息往往是一件复杂的事。CDC 是一个可能的解决方案。微服务可以使用 CDC 来获取其他微服务的数据库变化,获取数据状态更新,以及执行相应逻辑。

更新缓存

命令查询责任隔离 Command Query Responsibility Segregation (CQRS)的概念是将命令活动与查询活动分开。这两者有本质上的不同:

  • 命令向数据源写入数据。
  • 查询从数据源读取数据。

问题是,读事件发生的时间与写事件发生的时间有关,以及这些事件的发生是由谁来承担责任的?

更新缓存可能很困难。你可以使用 CDC 从数据库获取数据更新事件,让它控制缓存的更新或失效。

CQRS 设计通常使用两种不同的存储实例来支持业务查询和变更操作。为了保证数据的一致性,我们可以使用分布式事务来保证强大的数据一致性,代价是可用性、性能和扩展性。你也可以使用 CDC 来确保最终的数据一致性,它的性能和伸缩性较好,但其代价是数据延迟,目前业界可以保持在毫秒范围内。

例如,你可以使用 CDC 把 MySQL 中的数据同步到你的全文搜索引擎(比如ElasticSearch)。在这种架构中,ElasticSearch 搜索了所有的查询,但是当你需要修改数据时,你不能直接操作 ElasticSearch 的,你需要修改上游的 MySQL 数据,因而生成了一个更新事件。当 ElasticSearch 监视数据库时,这个事件就被系统获取了,并在 ElasticSearch 中提示更新。

在一些 CQRS 系统中,也可以用类似的方法更新查询视图。

痛点

CDC 不是一个新概念,很多现有的项目已经实现了它。但是对很多用户来说,已有解决方案存在一些不足。

单数据表配置

当你使用一些 CDC 软件时,你必须分别配置每个表。例如,为了同步十张表,你需要写十条 源 SQL 和 汇聚 Sink SQL 语句。为了进行转换操作,你也需要写与转换相关的 SQL 语句。

有时候,对于一张表来说可以手写,但只对数据量小的情况适用。当数据量大时,会发生类型映射或参数配置的错误,进而导致较高的操作和维护成本。

SeaTunnel 是一个易用的数据集成平台,有望解决这个问题。

不支持模式演化

一些 CDC 解决方案支持 DDL 事件传递,但不支持传递到 汇聚节点 Sink ,以便它能进行同步变更。由于无法根据 DDL 事件改变转换的类型信息,所以即使一个能获取事件的 CDC 也不一定可以将它发送至引擎(所以汇聚节点不能遵循 DDL 事件来进行变更)。

太多的链接

在一些 CDC 平台上,当有多个表时,如果一张表被同步了,就必须使用一个链接来代表一张表。当存在多个表时,也需要很多链接。这就给源 JDBC 数据库带来了压力,同时导致binlog 过多,还会导致重复的日志解析。

SeaTunnel CDC 架构的目标

Apache SeaTunnel 是一个开源、高效、分布式、大规模的数据集成框架。为了解决现有数据集成工具解决不了的问题,开发者社区“重新造轮子”,开发了一种具有独特功能的 CDC 平台。它的架构设计吸收了现有工具的优点,消除了相应的缺点。

Apache Seatunnel 支持:

  • 以无锁并行的方式快照历史数据。
  • 日志心跳检测和动态添加数据表。
  • 读取子数据库、子表和多结构表。
  • 模式演进。
  • 所有基础的 CDC 功能。

它降低了用户的操作和维护成本,并且支持动态添加数据表。

例如,当你要同步整个数据库,并在稍后需要添加一个新表,你不必手动维护、改变配置或重启当前作业。

另外,Apache SeaTunnel 也支持并行读取子数据库、子表和多结构表。还支持模式演进、DDL 转换,以及在引擎内改变支持的模式,这些可以变为 转换器 Transform 和 汇聚节点 Sink 。

SeaTunnel CDC 现状

如今,CDC 拥有支持增量和快照阶段的基本能力。它也支持 MySQL 实时和离线使用。MySQL 实时测试已完成,即将进行离线测试。因为它涉及对转换器和汇聚节点的更改,目前还不支持模式。不支持动态发现新增表,已预留了一些支持多结构表的接口。

项目展望

作为 Apache 孵化的项目,Apache SeaTunnel 的社区正快速发展起来。下一届社区计划会议的主要目标有:

1、发展并改进连接器和目录生态

我们正努力改善连接器和目录功能,包括:

  • 支持连接更多数据库,包括 TiDB、Doris 和 Stripe。
  • 改善现有的连接器的易用性和性能。
  • 支持 CDC 连接器用于实时、增量同步场景。

任何对连接器感兴趣者都可以查看 Umbrella

2、支持更多数据集成场景(SeaTunnel 引擎)

现有的引擎仍然存在一些解决不了的痛点,例如对整个数据库的同步,表结构变化的同步以及任务失败的大粒度。

我们正努力解决这些问题,对此感兴趣者可以查看 #2272 议题

3、更易使用(Web 版)

我们正努力提供 Web 界面,令操作更简便。通过 Web 界面,我们将实现以 DAG/SQL 的形式查看目录、连接器、任务和相关信息。我们也会给予用户访问调度平台的权限,以便更方便地进行任务管理。

欲了解更多关于 Web 版的信息,请访问 Web 平台子项目

总结

数据库活动通常必须被仔细跟踪,才能对数据的更新、删除或添加操作进行管理。CDC 提供了这种功能。Apache SeaTunnel 是一个开源解决方案,能满足这些需求,它将持续迭代更新,从而提供更多功能。该项目和社区也很活跃,欢迎你的加入。

(题图:MJ:database connections illustration in high resolution, very detailed, 8k)


via: https://opensource.com/article/23/3/synchronize-databases-apache-seatunnel

作者:Li Zongwen 选题:lkxed 译者:cool-summer-021 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关内容

下一代数据库技术展现大幅减...
钛媒体App 6月25日消息,为破解人工智能(AI)智能体常见的“...
2026-06-25 09:29:24
当AI学会了“删库跑路”,...
“一场Agent删库事故,意外揭开数据库体系的AI重构进程 202...
2026-05-09 19:47:42
AI大模型入场,重写职教生...
□ 本报记者 叶 真 生成式人工智能浪潮澎湃发展,如何让人工智能尤...
2026-03-24 12:39:34
AI“养龙虾”刷屏!券商出...
AI“养龙虾”太火了,最近不管打开哪个平台,大家都在聊怎么养龙虾。...
2026-03-09 09:46:17
“落地”为王,南京掀AI应...
□ 本报记者 李 凯 马年春节“AI红包大战”打响之前,南京优通科...
2026-02-02 07:18:53
AI拿走HBM,手机与PC...
“数据库最早发展的时候,关键挑战就是内存墙,到今天,这个‘幽灵’又...
2026-01-31 17:49:06

热门资讯

“Linux 中国” 开源社区... 这是一个艰难的决定 —— 这不是调侃,而是当你真正做出改变了你十几年生活轨迹的决定时,你就会明白这个...
硬核观察 #1263 德国铁路... #1 德国铁路公司招聘 Windows for Workgroups 3.11 管理员该职位要求了解...
人工智能教程(七):Sciki... 在本系列的 上一篇文章 中,我们用 TensorFlow 构建了第一个神经网络,然后还通过 Kera...
关闭 WSL 中正在运行的 L... 以下是使用 WSL 关闭在 Windows 内运行的 Linux 系统的不同方法。你使用 WSL 在...
MX Linux 23.2 “... 最新的 MX Linux 23.2 小版本更新带来了基本的改进和新增功能。MX Linux 推出了 ...
硬核观察 #1262 网络上最... #1 网络上最古老的软件存档库之一即将关闭美国新墨西哥州立大学(NMSU)最近宣布,即将于 2024...
如何在 RHEL 上通过绑定配... 在 Linux 中,你可以根据自己的需要创建高级网络设置,如 网络绑定 Network Bondin...
Linux Matrix 消息... Matrix 用户可以升级 Fractal 6 了!Fractal 是目前 最好的 Matrix 客...
如何通过 VLC 使用字幕 使用 VLC 媒体播放器播放和管理字幕的新手指南。我是一个超级动漫迷,如果你想观看最新的剧集,那么你...
硬核观察 #1261 X 计划... #1 X 计划在奥斯汀建立内容审核总部据报道,该部门将招聘 100 名全职员工,将主要关注 CSE ...