写点什么

亚马逊云科技架构师亲授:基于 SeaTunnel 迁移数据到 Amazon Aurora DSQL

作者:白鲸开源
  • 2025-11-26
    天津
  • 本文字数:2494 字

    阅读完需:约 8 分钟

Amazon Aurora DSQL 是亚马逊云科技于 2024 年 12 月推出的分布式 SQL 数据库,专为构建扩展性无限、高可用且免基础设施管理的应用程序设计,具有可用性高、无服务器模式架构、兼容性强、容错能力和安全级别高等特点。


由于 Aurora DSQL 的认证机制与 IAM 集成, 访问 Aurora DSQL 数据库需要通过 IAM 的身份来生成 token 进行访问,而 token 默认只有 15 分钟有效期,因此目前一些主流的数据同步工具暂不支持将其他数据库的数据迁移到 Aurora DSQL。


基于这种情况,本文作者基于数据同步工具 Apache SeaTunnel 开发了一个专门针对 Aurora DSQL 的 sink Connector,以满足从其他数据库迁移数据到 Aurora DSQL 需求。

SeaTunnel 介绍

SeaTunnel 是一个非常易用、多模态、超高性能的分布式数据集成平台,专注于数据集成和数据同步,主要旨在解决数据集成领域的常见问题。

SeaTunnel 相关特性

  • 丰富且可扩展的 Connector: 目前,SeaTunnel 支持超过 190 个 Connector 且数量还在增加,像主流数据库 MySQL 、Oracle、SQLServer、PostgreSQL 等都已经提供了 Connector 支持。插件式设计让用户可以轻松开发自己的 Connector 并将其集成到 SeaTunnel 项目中。

  • 批流集成:基于 SeaTunnel Connector API 开发的 Connector 完美兼容离线同步、实时同步、全量同步、增量同步等场景。 它们大大降低了管理数据集成任务的难度。

  • 分布式快照:支持分布式快照算法,保证数据一致性。

  • 多引擎支持:SeaTunnel 默认使用 SeaTunnel 引擎(Zeta)进行数据同步。 SeaTunnel 还支持使用 Flink 或 Spark 作为 Connector 的执行引擎,以适应企业现有的技术组件。 SeaTunnel 支持 Spark 和 Flink 的多个版本。

  • JDBC 复用、数据库日志多表解析:SeaTunnel 支持多表或全库同步,解决了过度 JDBC 连接的问题; 支持多表或全库日志读取解析,解决了 CDC 多表同步场景下需要处理日志重复读取解析的问题。

  • 高吞吐量、低延迟:SeaTunnel 支持并行读写,提供稳定可靠、高吞吐量、低延迟的数据同步能力。

  • 完善的实时监控:SeaTunnel 支持数据同步过程中每一步的详细监控信息,让用户轻松了解同步任务读写的数据数量、数据大小、QPS 等信息。

SeaTunnel 工作流程


图一 Seatunnel 工作流图


SeaTunnel 的工作流程如上图所示,用户配置作业信息并选择提交作业的执行引擎。Source Connector 负责并行读取源端数据并将数据发送到下游 Transform 或直接发送到 Sink,Sink 将数据写入目的地。

从源码构建 SeaTunnel

git clone https://github.com/apache/seatunnel.gitcd seatunnelsh ./mvnw clean install -DskipTests -Dskip.spotless=truecp seatunnel-dist/target/apache-seatunnel-${version}-bin.tar.gz /The-Path-You-Want-To-Copycd /The-Path-You-Want-To-Copytar -xzvf "apache-seatunnel-${version}-bin.tar.gz"
复制代码


从源码构建成功后,所有的 Connector 插件和一些必要的依赖(例如:mysql 驱动)都包含在二进制包中。您可以直接使用 Connector 插件,而无需单独安装它们。

使用 Seatunnel 同步 MySQL 数据到 Aurora DSQL 配置示例

env {  parallelism = 1  job.mode = "STREAMING"  checkpoint.interval = 6000  checkpoint.timeout = 1200000}source {  MySQL-CDC {    username = "user name"    password = "password"    table-names = ["db.table1"]    url = "jdbc:mysql://dbhost:3306/db?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC&connectTimeout=120000&socketTimeout=120000&autoReconnect=true&failOverReadOnly=false&maxReconnects=10"    table-names-config = [      {        table = "db.table1"        primaryKeys = ["id"]      }    ]  }}transform {
}sink { Jdbc { url="jdbc:postgresql://<dsql_endpoint>:5432/postgres" dialect="dsql" driver = "org.postgresql.Driver" username = "admin" access_key_id = "ACCESSKEYIDEXAMPLE" secret_access_key = "SECRETACCESSKEYEXAMPLE" region = "us-east-1" database = "postgres" generate_sink_sql = true primary_keys = ["id"] max_retries="3" batch_size =1000 }}
复制代码

运行数据同步任务

将上面的配置保存为 mysql-to-dsql.conf 文件(请注意需要将示例中的值替换为真实的参数),存放在 apache-seatunnel-${version} 的 config 目录下,执行以下命令:


cd "apache-seatunnel-${version}"./bin/seatunnel.sh --config ./config/mysql-to-dsql.conf -m local
复制代码



图二 数据同步日志信息


命令执行成功后,您可以通过新产生的日志观察任务执行情况,如果出现错误,也可以根据异常信息进行定位,比如数据库连接超时、表不存在情况。而正常情况下,数据会成功写入目标 Aurora DSQL,如上图所示。

总结

Aurora DSQL 是一款高度安全、易扩展、无服务器基础设施的分布式数据库,它的认证方式与 IAM 身份结合,因此目前缺少合适的工具可以将数据同步到 Aurora DSQL 中,尤其是在实时数据同步方面。SeaTunnel 是一款非常优秀数据集成和数据同步工具,目前支持多种数据源的数据同步,并且基于 SeaTunnel 也可以非常灵活地实现自定义的数据同步需求,比如全量同步/增量实时同步。基于这种灵活性,本文作者开发了一种专门针对于 Aurora DSQL 的 Sink Connector, 以满足对于 Aurora DSQL 数据同步需求。

参考文档

  • SeaTunnel 部署:https://seatunnel.apache.org/zh-CN/docs/start-v2/locally/deployment

  • 开发新的 SeaTunnel Connector:

  • https://github.com/apache/seatunnel/blob/dev/seatunnel-connectors-v2/README.zh.md

  • 在 Aurora DSQL 中生成身份验证令牌:https://docs.aws.amazon.com/aurora-dsql/latest/userguide/SECTION_authentication-token.html


*前述特定亚马逊云科技生成式人工智能相关的服务目前在亚马逊云科技海外区域可用。亚马逊云科技中国区域相关云服务由西云数据和光环新网运营,具体信息以中国区域官网为准。

本篇作者


谭志强,亚马逊云科技迁移解决方案架构师,主要负责企业级客户的上云或跨云迁移工作,具有十几年 IT 专业服务经验,历任程序设计师、项目经理、技术顾问、解决方案架构师。

发布于: 刚刚阅读数: 5
用户头像

白鲸开源

关注

一家开源原生的DataOps商业公司。 2022-03-18 加入

致力于打造下一代开源原生的DataOps 平台,助力企业在大数据和云时代,智能化地完成多数据源、多云及信创环境的数据集成、调度开发和治理,以提高企业解决数据问题的效率,提升企业分析洞察能力和决策能力。

评论

发布
暂无评论
亚马逊云科技架构师亲授:基于SeaTunnel迁移数据到Amazon Aurora DSQL_开源_白鲸开源_InfoQ写作社区