配置管道任務-選擇資料去向

  • 文档创建者:Roxy
  • 历史版本:43
  • 最近更新:Nikozhan 于 2025-03-07
  • 1. 概述

    1.1 版本

    FineDataLink 版本
    功能變動
    4.0.5-
    4.1.7.3支援 HANA 作為寫入資料源
    4.1.8.1配置管道任務-選擇資料來源 步驟中生成的分組表,不支援 DDL
    4.1.8.2管道任務支援寫入神通資料
    4.1.11.2YMatrix 作為目標端時,支援無主鍵同步
    4.1.11.5若來源表支援主鍵,欄位映射預設選中來源表的主鍵和 Not Null

    1.2 更多歷史版本

    FineDataLink 版本功能變動
    4.0.6支援 Mysql 作為寫入資料源
    4.0.7支援 SQL Server 作為寫入資料源
    4.0.8支援 GaussDB 200 作為寫入資料源
    4.0.9支援 Oracle 、PostgreSQL 作為寫入資料源
    4.0.14支援邏輯刪除和顯示資料儲存入庫時間戳
    4.0.15支援Greenplum、Greenplum(並行裝載)作為寫入資料源
    4.0.17

    支援Mysql 作為讀取和寫入資料源,設定同步源表結構變化

    4.0.24支援 StarRocks 作為寫入資料源
    4.0.28

    管道任務支援寫入至 TiDB 資料庫

    管道任務支援寫入至 ClickHouse

    管道任務支援寫入至Amazon Redshift

    4.0.29

    Greenplum、Greenplum(並行裝載)作為目標端同步優化:當資料透過COPY裝載失敗時,重新使用JDBC裝載,重新裝載再失敗時,識別為髒資料,並正常記錄,以保證資料正常

    4.1.1目標表來自 Oracle、GP、SQLServer 資料庫,支援無主鍵同步,詳情參見本文 3.5 節
    4.1.3StarRocks 資料源作為寫入端支援批量刪除資料,大大提升同步效率
    4.1.7.2目標表選擇已存在表且已存在表包含「_fdl_marked_deleted」欄位時,支援使用源端邏輯刪除功能
    目標表為已存在表&已存在表包含_fdl_update_timestamp欄位,支援「同步時標記時間戳」功能

    1.3 功能簡介

    「選擇去向」步驟中,需要設定實時同步資料要存放的位置、目標表是否追加時間戳欄位(資料變化時間)、來源端表結構變化,目標端是否跟隨變化等。如下圖所示:

    2. 注意事項

    資料管道使用 Greenplum 或者 Greenplum(並行裝載)作為目標表時,都是用的 COPY 裝載模式,需要在目標資料庫先建立 fdl_temp 模式用來存放臨時表,因此需要給該資料連結帳號賦予在對應資料庫建立模式的權限。詳情參見:配置Greenplum資料源

    4.0.29 及之後版本,Greenplum、Greenplum(並行裝載)作為目標端同步優化:當資料透過COPY裝載失敗時,重新使用JDBC裝載,重新裝載再失敗時,識別為髒資料,並正常記錄,以保證資料正常。

    3. 操作步驟

    3.1 資料源&庫

    設定實時同步資料要存放的位置。管道任務支援的目標端請參見:資料管道支援的資料源類型

    • 目標資料表結構(表名和欄位名)和來源表一致:首次資料同步會清空目標資料表資料,然後全量同步資料,此後增量同步。

    • 目標資料庫沒有和來源表一樣的資料表,則直接在目標資料庫建立資料表。

    3.2 源端刪除資料

    1)兩種方式說明如下:

    • 目標端執行物理刪除:來源表刪除資料,目標表中也會直接刪除。

    • 目標端執行邏輯刪除來源表刪除資料,目標表將新增一個名稱為_fdl_marked_deleted的布林型欄位(欄位預設為false),用於記錄資料刪除狀態。來源資料表刪除了一筆資料,此時同步至目標表,目標表不進行物理刪除,而是將_fdl_marked_deleted欄位更新為 true 

    4.1.7.2 及之後版本,目標表選擇已存在表且已存在表包含「_fdl_marked_deleted」欄位時,支援使用源端邏輯刪除功能;4.1.7.2 及之後版本,若未開啟邏輯刪除&目標表為已存在表&目標表包含「_fdl_marked_deleted」欄位時,該欄位後續將傳空值。

    若目標端執行「邏輯刪除」,說明如下:

    目標表邏輯刪除功能說明
    自動建表目標表映射增加「_fdl_marked_deleted」欄位,同步時標記邏輯刪除
    已存在表:目標表不包含_fdl_marked_deleted欄位

    同步類型選擇存量+增量:目標表映射增加「_fdl_marked_deleted」欄位,同步時標記邏輯刪

    同步類型選擇僅增量同步目標表映射增加「_fdl_marked_deleted」欄位,同步時將歷史資料_fdl_marked_deleted」欄位值改為 false,併為新資料標記邏輯刪除

    已存在表:目標表包含_fdl_marked_deleted欄位

    同步類型選擇存量+增量直接使用「_fdl_marked_deleted」欄位,同步時標記邏輯刪

    同步類型選擇僅增量同步直接使用「_fdl_marked_deleted」欄位,同步時不處理歷史資料邏輯刪除欄位,為新資料標記邏輯刪除

    2)需注意:

    • 開啟邏輯刪除時,4.0.23 版本進行資料初始化全表更新,對目標端清表重寫,大大提升了資料同步效率。

    • 如果後續有和目標表表中已存在主鍵相同的資料重新寫入,不插入新資料,而是更新該資料,並將之前已經標記為刪除的資料標記為未刪除。

    • GaussDB 資料庫及 PostgreSQL9.4 以下(含9.4)版本資料庫,不支援「目標端執行邏輯刪除」。

    3.3 同步時標記時間戳

    勾選「同步時標記時間戳」按鈕,所有目標表將新增一個名稱為_fdl_update_timestamp的長整數型態欄位,以毫秒級時間戳的形式記錄資料在資料庫中實際新增和更新的時間(資料庫所在時間)。

    需注意:

    • 勾選「目標端執行邏輯刪除」和「同步時標記時間戳」後預設作用在該管道任務的所有資料表,不支援僅設定管道任務中的一張表。

    • 時間戳同步在資料完全同步後執行。若資料量較大,資料同步程式中時間戳可能暫時為空。

    若開啟「同步時標記時間戳」,說明如下:

    目標表
    說明
    自動建表目標表映射增加「_fdl_update_timestamp」欄位,同步時傳入時間戳
    已存在表 - 目標表沒有「_fdl_update_timestamp」欄位

    同步類型選擇存量+增量:目標表映射增加「_fdl_update_timestamp」欄位,同步時傳入時間戳

    同步類型選擇僅增量同步目標表映射增加「_fdl_update_timestamp」欄位,同步時補齊歷史資料時間戳,併為新資料傳入時間戳

    已存在表 - 目標表包含「_fdl_update_timestamp」欄位

    4.1.7.2 及之後版本支援

    同步類型選擇存量+增量直接使用「_fdl_update_timestamp」欄位,同步時傳入時間

    同步類型選擇僅增量同步直接使用「_fdl_update_timestamp」欄位,同步時不處理歷史資料時間戳,為新資料傳入時間戳

    若未開啟「同步時標記時間戳」&目標表包含「_fdl_update_timestamp」欄位,該欄位後續將傳空值。

    範例:

    管道任務中勾選了「同步時標記時間戳」、選擇目標端執行邏輯刪除,如果來源資料庫資料表「S訂單」中刪除了一條訂單 ID 為 10257 的資料,如下圖所示:

    1705633234931129.png

    在目標資料表中,訂單 ID 為 10257 的資料不會被刪除,而是將對應「_fdl_marked_deleted」欄位修改為 true,同時「_fdl_update_timestamp」欄位時間戳修改為刪除欄位的時間戳,如下圖所示:

    3.png

    注:「目標端執行邏輯刪除」、「同步時標記時間戳」功能僅在管道任務建立和暫存狀態時可進行配置,運作中、暫停狀態的任務不允許調整配置。

    3.4 同步源表結構變化

    在使用管道任務進行資料實時同步程式中,源端表結構可能因業務調整等原因發生變動,如增刪表、增刪欄位、修改欄位名稱、修改欄位類型等,此時希望在目標側的表可以自動同步這些源端的調整。

    詳情參見:同步源表结构变化

    注:选择数据来源 步驟中配置的分組表,不支援「同步源表結構變化」功能。

    若未開啟「同步源表結構變化」,則若來源資料結構發生了變化,管道任務執行方式如下所示:

    操作
    「關閉」同步源表結構變化欄位映射配置變化目標表結構變化目標表資料變化
    刪除表繼續同步其他表。無變化。

    無變化,修改全部忽略。

    被刪除表在後續同步中將沒有新資料寫入。
    重新命名錶原名稱對應的表刪除,繼續同步其他表。原名稱表在後續同步中將沒有新資料寫入。
    刪除欄位繼續同步其他欄位。被刪除欄位在後續同步中傳NULL值。
    新增欄位忽略新增欄位,繼續同步其他欄位。

    無變化,仍然按照原來的欄位配置情況進行同步。

    修改欄位名稱識別為原名稱表欄位刪除,同刪除欄位邏輯。被重新命名欄位在後續同步中傳NULL值。
    修改欄位類型忽略類型同步,如果類型不匹配,作為髒資料處理。無變化,仍然按照原來的欄位配置情況進行同步。

    3.5 設定無主鍵同步

    若某些資料源的業務表沒有主鍵,使用者也不知道這些表作為來源表該標記什麼欄位作為邏輯主鍵。此時對無主鍵的表,無需標記邏輯主鍵,也可以實現資料的實時同步。

    需要注意的是,勾選了無主鍵同步後,在管道進行資料同步時,會自動使用目標表所有可用欄位作為邏輯主鍵並配置到任務中,並使用邏輯主鍵作為更新和刪除時的比對欄位。

    即將目標表所有能進行比對的欄位都用來比對,但是不區分源端對完全相同資料中部分資料的操作。

    對於目標端的主鍵設定和同步邏輯請參見:目標端主鍵設定邏輯

    4.1.1 及之後版本,選擇去向步驟中,資料源為 Oracle/GP/SQLServer 資料庫時,支援無主鍵同步;4.1.11.2 及之後版本,選擇去向步驟中,資料源為 YMatrix 資料庫時,支援無主鍵同步。

    勾選「無主鍵同步」,如下圖所示:


    場景說明:

    • 源端有 5 條相同資料,第一次啟動目標端也會有 5 條相同資料。

    • 源端相同資料刪除其中一條、多條,目標端都是全部刪除。

    • 源端相同資料再增加相同的一條或多筆資料,目標端資料無變化。

    • 源端多條相同資料只修改一其中條,目標端相同資料全部修改。

    • 源端多條相同資料修改多條,按照改動順序,源端第一次修改的資料,目標端對應的那個欄位也全部同時修改;之後修改的資料,按照最新資料新增。

    若該步驟設定了同步源表結構變化,則:

    • 欄位新增:與其他 DDL 相同,目標欄位新增,新增的這個欄位不標記物理主鍵或邏輯主鍵。

    • 欄位刪除:如果刪除欄位在目標側對應是邏輯主鍵,任務將報錯終止。

     如果刪除欄位在目標側對應是物理主鍵,由於此時資料同步將一直違反主鍵非空的規則,故將任務報錯中止。

    4. 後續步驟

    附件列表


    主题: 資料管道
    • 有帮助
    • 没帮助
    • 只是浏览
    • 评价文档,奖励 1 ~ 100 随机 F 豆!