使用 SeaTunnel 建立從 MySQL 到 Databend 的數據同步管道

SeaTunnel?是一個非常易用、超高性能的分布式數據集成平臺,支持實時海量數據同步。 每天可穩定高效地同步數百億數據,已被近百家企業應用于生產,在國內較為普及。

Databend?是一款開源、彈性、低成本,基于對象存儲也可以做實時分析的云原生湖倉。

SeaTunnel 架構

SeaTunnel 整體架構:

本文將使用 SeaTunnel 建立從 MySQL 到 Databend 的數據同步管道,實現從 MySQL 數據源同步數據到 Databend 目標表的目的。

SeaTunnel MySQL-CDC 和 Databend Sink Connector

SeaTunnel 的 MySQL CDC 連接器允許從 MySQL 數據庫中讀取快照數據和增量數據,其實現的原理是基于 debezium-mysql-connector 。

而 Databend 在 PR?[Feature][Connector-V2] Support databend source/sink connector?之后也同時在 SeaTunnel 中支持了 Databend 作為 Source 和 Sink Connector。這里我們使用 SeaTunnel 的 MySQL-CDC Source Connector 和 Databend Sink Connector 來搭建數據同步管道。

編譯 SeaTunnel

由于上述 Databend Connector 的 PR 剛合并入 SeaTunnel 的 dev 分支,還沒有正式 release,所以目前要使用 Databend Connector 的話,需要基于源碼對 SeaTunnel 進行構建。

Clone 源碼

首先我們需要從?GitHub?克隆 SeaTunnel 源代碼。

git clone git@github.com:apache/seatunnel.git
本地安裝子項目

在克隆源代碼之后,需要運行?./mvnw?命令將子項目安裝到 maven 本地存儲庫。否則代碼無法在 JetBrains IntelliJ IDEA 中正確啟動。

./mvnw install -Dmaven.test.skip
構建 SeaTunnel

安裝 maven 后,可以使用以下命令進行編譯和打包。

mvn clean package -pl seatunnel-dist -am -Dmaven.test.skip=true

構建后的內容在?seatunnel/seatunnel-dist/target?中,我們需要解壓?apache-seatunnel-2.3.12-SNAPSHOT-src.tar.gz,得到如下目錄:?

bin?下面是可以直接運行的 shell 腳本,能夠一鍵啟動 SeaTunnel;

config?中是 jvm options 相關的配置文件;

lib中是運行 SeaTunnel 或者 connector 相關的 jar 包。

創建 connector 配置文件

我們的任務設定是通過 SeaTunnel 從 MySQL 中同步 mydb.t1 表。 配置文件 為 mysql-to-databend.conf:

env{parallelism = 1job.mode = "STREAMING"checkpoint.interval = 2000
}source {MySQL-CDC {base-url="jdbc:mysql://127.0.0.1:3306/mydb"username="root"password="123456"table-names=["mydb.t1"]startup.mode="initial"}
}
sink {Databend {url = "jdbc:databend://127.0.0.1:8000?presigned_url_disabled=true"database = "default"table = "t1"username = "databend"password = "databend"# 批量操作設置batch_size = 2# 如果目標表不存在,是否自動創建auto_create = true}
}

相關的參數設定可以參考?seatunnel MySQL文檔?和?seatunnel Databend Connector。

本地啟動 MySQL 與 Databend

啟動并初始化 MySQL 表數據

本地啟動 MySQL 后,創建一個數據庫?mydb,在 mydb 中新建一張表并插入 10 條數據:

create database mydb;
use mydb;
create table t1 (a int, b varchar(100));
insert into t1 values(1,'aa')
...
insert into t1 values(10,'bb')

本地啟動 Databend

version: '3'
services:databend:image: datafuselabs/databend:v1.2.754-nightlyplatform: linux/arm64ports:- "8000:8000"environment:- QUERY_DEFAULT_USER=databend- QUERY_DEFAULT_PASSWORD=databend- MINIO_ENABLED=truevolumes:- ./data:/var/lib/miniohealthcheck:test: "curl -f localhost:8080/v1/health || exit 1"interval: 2sretries: 10start_period: 2stimeout: 1s

直接?docker-compose up?即可啟動 Databend 服務。

啟動 SeaTunnel

./bin/seatunnel.sh --config ./bin/mysql-to-databend.conf -m local

啟動后 Databend Sink Connector 會首先將 MySQL 表中的全量數據同步過來:

接下來我們往 MySQL 中插入幾條數據,就會同步 MySQL 中增量的數據:

可以看到 SeaTunnel 在終端輸出的日志:?

以及 Databend 中查詢到數據:

說明數據已經及時同步過來了。

目前 Databend Sink Connector 還只支持 Append Only 模式,對于 update、delete 的數據沒做處理,會在下一個 seatunnel 的 PR 中實現完整的 CDC 功能。

結論

通過本文我們成功實現了從 MySQL 到 Databend 的實時數據同步管道。這個解決方案具有以下優勢:

  1. 簡單易用:SeaTunnel 提供了簡潔的配置方式,只需少量配置即可建立高效的數據同步管道。
  2. 實時性強:基于 CDC 技術,能夠實時捕獲 MySQL 的數據變更并同步到 Databend。
  3. 可擴展性好:SeaTunnel 的分布式架構使其能夠處理海量數據同步需求。
  4. 低開發成本:無需編寫復雜的 ETL 代碼,通過配置文件即可完成數據集成任務。

需要注意的是,目前 Databend Sink Connector 還只支持 Append Only 模式,對于 update、delete 的數據沒做處理,完整的 CDC 功能將在后續的 PR 中實現。這個方案特別適合需要將 MySQL 數據實時同步到 Databend 進行分析的場景,幫助企業構建實時數據湖倉架構。

關于 Databend

Databend 是一款開源、彈性、低成本,基于對象存儲也可以做實時分析的新式湖倉。期待您的關注,一起探索云原生數倉解決方案,打造新一代開源 Data Cloud。

👨?💻? Databend Cloud:databend.cn

📖 Databend 文檔:docs.databend.cn

💻 Wechat:Databend

? GitHub:github.com/databendlab...

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/91451.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/91451.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/91451.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux服務器換ip后客戶端無法從服務器下載數據到本地問題處理

服務器換ip后客戶端無法從服務器下載數據到本地,根據上圖提示,讓用戶清理下~/.ssh/known_hosts文件,下載恢復正常。

從0到1實現Shell!Linux進程程序替換詳解

目錄從0到1實現Shell!Linux進程程序替換詳解 🚀引言:為什么進程需要"變身術"?一、程序替換:進程的"換衣服"魔法 🔄1.1 什么是程序替換?1.2 程序替換的原理:內存…

暑期算法訓練.2

目錄 6.力扣 11.盛水最多的容器 6.1 題目解析: 6.2 算法思路: 6.2.1 暴力解法: 6.2.2 優化算法: 6.3 代碼演示: ?編輯 6.4 總結反思: 7.力扣 611.有效的三角形個數 7.1 題目解析: 7.2…

華為OD 消消樂游戲

1. 題意 游戲規則:輸入一個只包含英文字母的字符串,字符串中的兩個字母如果相鄰且相同,就可以消除。 在字符串上反復執行消除的動作,直到無法繼續消除為止,此時游戲結束。 輸出最終得到的字符串長度。 輸入 輸入原始…

小白學HTML,操作HTML文件篇(2)

目錄 一、添加多媒體 1.添加網頁圖片 2.添加網頁音頻 3.添加網頁視頻 二、創建容器 1. 標簽 2.布局 三、創建表格 1.表格標簽 2.添加表格表頭 3.添加表格標題 一、添加多媒體 在 HTML 網頁中可以輕松地使用標簽來添加圖片、音頻、視頻等多媒體,而這些多媒體并…

微服務架構中實現跨服務的字段級權限統一控制

結合集中式權限管理、分布式上下文傳遞、動態策略執行等技術 ??一、核心架構設計?? ??1. 分層控制模型?? ??網關層??:統一校驗用戶身份與基礎權限,攔截非法請求。 ??服務層??:基于用戶權限動態過濾數據字段,實現業務級控制。 ??策略中心??:集中管理權…

【實現100個unity特效之27】使用unity的ShaderGraph實現一個帶裁剪邊緣光的裁剪效果(2d3d通用)

文章目錄普通裁剪效果1、創建一個Lit Shader Graph2、ShaderGraph前置配置3、添加節點4、效果5、修改裁剪方向帶邊緣色的裁剪1、在裁剪的基礎上添加裁剪邊緣光2、邊緣的亮度3、修改裁剪方向4、效果5、我們可以代碼控制它的變化,如下2D3D游戲通用專欄推薦完結普通裁剪…

Android Scoped Storage適配完全指南

Android Scoped Storage適配完全指南關鍵詞:Android、Scoped Storage、適配、存儲權限、文件訪問摘要:本文將全面介紹Android Scoped Storage的相關知識,從背景出發,詳細解釋核心概念,闡述其原理和架構,給出…

Typecho集成PHPMailer實現郵件訂閱功能完整指南

文章目錄 Typecho使用PHPMailer實現文章推送訂閱功能詳解 1. 背景與需求分析 1.1 為什么選擇PHPMailer 1.2 功能需求 2. 環境準備與配置 2.1 安裝PHPMailer 2.2 數據庫設計 3. 核心功能實現 3.1 郵件服務封裝類 3.2 訂閱功能實現 3.2.1 訂閱表單處理 3.2.2 確認訂閱處理 3.3 文…

無線-二層組網-直接轉發

文章目錄無線二層組網直接轉發🏡作者主頁:點擊! 🤖Datacom專欄:點擊! ??創作時間:2025年07月16日08點00分 無線二層組網 直接轉發 本地轉發中所有的沿途都需要配置對應VLAN的通過&#xff…

gin go-kratos go-zero框架對比

Gin、Go-Kratos 和 Go-Zero 是 Go 語言中三種常見的服務框架,它們在定位、設計理念、復雜度和適用場景上差異較大。下面我們從功能定位、設計理念、優劣對比、使用建議等維度進行深入對比。🧭 一句話總結框架定位Gin輕量級、高性能的 HTTP 路由框架Go-Kr…

4G模塊 A7670發送英文短信到手機

命令說明ATi顯示產品的標志信息 ATCIMI查詢IMSI ATCICCID從SIM卡讀取ICCID ATCGSN查詢產品序列號 ATCPIN查詢卡狀態 ATCSQ查詢信號強度 ATCGATT查詢當前PS域狀態 ATCREG查詢GPRS注冊狀態 ATCEREG查詢4G注冊狀態 ATCGPADDR查詢PDP地址 ATCMGF選擇短信格式 ATCMGS發送短信流程第一…

歸并排序遞歸法和非遞歸法的簡單簡單介紹

基本思想: 歸并排序(MERGE-SORT)是建立在歸并操作上的一種有效的排序算法,該算法是采用分治法(Divide and Conquer)的一個非常典型的應用。將已有序的子序列合并,得到完全有序的序列;即先使每個…

webrtc之子帶分割下——SplittingFilter源碼分析

文章目錄前言一、頻帶分割過程1.SplittingFilter的創建2.頻帶分割整體流程1)分割時機2)分割規則3)分割核心代碼3.頻帶合并二、算法實現1.實現原理介紹2.All pass QMF系統源碼1)提高精度2)經過串聯全通濾波器3&#xff…

Java運維之Tomcat升級

Tomcat升級準備工作 下述所有過程中,包含了兩種升級方式,一種是備份舊版本的 bin 和 lib,將新版本的 bin 和 lib 對舊版本進行覆蓋;另一種是直接備份舊版本的Tomcat包,運行新版本,將舊版本的配置文件(conf/ * )和應用(webapps/ * )等同步到新版本。 1. 到官網下載指…

MySQL的可重復讀隔離級別實現原理分析

MySQL 的 可重復讀(Repeatable Read, RR) 隔離級別主要通過 多版本并發控制(Multi-Version Concurrency Control, MVCC) 和 鎖機制(特別是間隙鎖) 來實現的。其核心目標是:在一個事務內&#xf…

利用Java自定義格式,循環導出數據、圖片到excel

利用Java自定義格式,循環導出數據、圖片到excel1、自定義格式循環導出數據1.1.設置格式1.1.1、居中樣式1.1.2、應用樣式到合并區域1.1.3、合并單元格1.1.4、設置列寬1.2、寫入數據1.2.1、創建標簽頭部1.2.2、寫入標簽內容2、自定義格式循環導出圖片2.1、設置格式并插…

SAP學習筆記 - 開發45 - RAP開發 Managed App New Service Definition,Metadata Extension

上一章講了在 Data Model View ( CDS View for BO Structure )基礎上創建 Projection View ( CDS View for BO Projection )。 SAP學習筆記 - 開發44 - RAP開發 Managed App 建 Projection View,Provider Contract,用 redirected to 設定父子關系-CSDN博…

React強大且靈活hooks庫——ahooks入門實踐之高級類hook(advanced)詳解

什么是 ahooks? ahooks 是一個 React Hooks 庫,提供了大量實用的自定義 hooks,幫助開發者更高效地構建 React 應用。其中高級類 hooks 是 ahooks 的一個重要分類,專門用于處理一些高級場景,如受控值、事件發射器、性能…

計算機網絡——數據鏈路層(25王道最新版)

數據鏈路層前言數據鏈路層的功能封裝成幀(組幀)字符計數法字節填充法零比特填充法違規編碼法小節差錯控制檢錯編碼奇偶校驗碼CRC校驗碼(循環冗余校驗碼)基本思想如何構造如何檢錯糾錯糾錯編碼海明校驗碼設計思路求解步驟&#xff…