全部產品
Search
文件中心

DataWorks:MySQL整庫即時同步至Elasticsearch

更新時間:Mar 07, 2026

Data Integration支援將MySQL等源頭的資料整庫即時同步至Elasticsearch。本文以MySQL為源端、Elasticsearch為目標端情境為例,為您介紹如何將MySQL整個資料庫的資料全量+增量即時同步至Elasticsearch。

準備工作

配置任務

步驟一:建立同步任務

  1. 進入Data Integration頁面。

    登入DataWorks控制台,切換至目標地區後,單擊左側導覽列的Data Integration > Data Integration,在下拉框中選擇對應工作空間後單擊進入Data Integration

  2. 在左側導覽列單擊同步任務,然後在頁面頂部單擊新建同步任務,並配置任務資訊:

    • 數據來源類型MySQL

    • 數據去向類型Elasticsearch

    • 具体类型整庫即時

    • 同步步驟

      • 結構遷移:自動在目標端建立與源端匹配的索引結構(如索引、欄位對應等),但不包含資料。

      • 全量同步(可選):一次性將源端指定對象(如表)中的所有歷史資料完整地複製到目標端。通常用於首次資料移轉或資料初始化。

      • 增量同步(可選):在全量同步完成後,持續地捕獲源端發生的變更資料(新增、修改、刪除),並將其同步至目標端。

步驟二:配置資料來源與運行資源

  1. 來源數據源選擇已添加的MySQL資料來源,去向數據源選擇已添加的Elasticsearch資料來源。

  2. 運行資源地區,選擇同步任務所使用的資源組,並為該任務分配資源組CU

    說明

    當任務日誌中出現Please confirm whether there are enough resources...等資源不足的提示時,說明當前資源群組的可用計算單元(CU)已無法滿足任務啟動或啟動並執行需求。可在資源組配置面板中,適當調高任務佔用的CU數量,以分配更多計算資源。

    資源設定大小推薦值詳見:Data Integration推薦CU,實際使用時需根據實際情況進行調整。

  3. 並確保來來源資料源與去向資料來源均通過連通性檢查

步驟三:同步方案配置

1. 配置資料來源

  • 此步驟中,您可以在源端庫表地區選取項目源端資料來源下需要同步的表,並單擊image表徵圖,將其移動至右側已選庫表。若庫表數較多,可以使用庫過濾或者表過濾,通過配置Regex來選擇需要同步的表。

    image

  • 當需要將多個分庫分表(結構相同)寫入同一目標表時,可使用正則選表

    image
    在源表配置中填寫Regex,DataWorks 將自動識別並採集所有匹配的源表,並將其資料統一寫入該運算式映射的目標表中。

    說明

    此方式適用於分區表合并同步情境(類分庫分表同步),提升配置效率,避免重複添加多對一同步規則。

2. 目標表映射

操作

說明

刷新映射

系統會自動列出您選擇的源端表,但目標表的具體屬性需要您重新整理確認後才會生效。

  • 批量選中需要同步的表,單擊批量重新整理映射。

  • 目標表名:目標表名將根據目標表名映射自定義規則自動產生。預設為 ${源端庫名}_${表名},如果目標端不存在此同名表,系統將自動為您建立。

目標索引名映射自定義(可選)

系統存在預設的表名建置規則:${源端庫名}_${表名}。您也可以在目標表名映射自定義列,單擊編輯按鈕可以新增自訂目標表名規則。

  • 規則名稱:定義規則名稱,建議為規則配置一個具有明確業務意義的名稱。

  • 目標表名:目標表名可以通過單擊image按鈕,選擇手動輸入內建變數進行拼接,產生目標表名。其中變數支援源端資料來源名,源端資料庫名和源端表名。

  • 編輯內建變數:內建變數可以在原有的基礎上進行字串轉換。

可實現如下情境:

  1. 名添加前尾碼:通過設定常量在源端表名的基礎上,添加首碼或者尾碼。

    規則配置

    應用效果

    image

    image

  2. 字串統一替換:將源端表名的字串dev_,統一替換為prd_

    規則配置

    應用效果

    image

    image

  3. 多張表寫入一張表:目標表名設為常量。

    規則配置

    應用效果

    image

    image

編輯欄位類型映射(可選)

系統存在預設的來源類型目標類型映射,您可以單擊表格右上方的編輯字段類型映射,自訂來源端表與目標端表欄位類型映射關係,配置完後單擊應用並刷新映射

編輯欄位類型映射時,需要注意欄位類型轉換規則是否正確,否則會導致類型轉換失敗而產生髒資料,影響任務運行。

編輯目標索引(可選)

系統會根據自訂的索引名映射規則,自動建立尚不存在的目標索引,或複用已存在的同名索引。

DataWorks將基於源端表結構自動產生目標索引結構,常規情境下無需人工幹預。

當目標索引為待建立狀態時,您可以為目標索引在原有表結構基礎上新增欄位。操作如下:

  1. 為目標索引添加欄位

    • 單表新增欄位:單擊目標索引名列的image.png按鈕,通過編輯建索引語句地區來添加欄位。

      • 動態映射狀態:用於在同步資料時,是否將資料來源表的新增欄位添加至目標索引中。取值如下:

        • true:當映射的目標索引檢測到同步的資料來源表中存在新添加的欄位時,會將該欄位同步添加至目標索引中,後續該欄位可以被搜尋。該取值為預設值。

        • false:當映射的目標索引檢測到同步的資料來源表中存在新添加的欄位時,會將該欄位同步添加至目標索引中,但後續該欄位不可以被搜尋。

        • strict:當映射的目標索引檢測到同步的資料來源表中存在新添加的欄位時,將拒絕同步該欄位至目標索引併產生異常報錯,您可以在日誌資訊中查看報錯詳情。

        • runtime:當映射的目標索引檢測到同步的資料來源表中存在新添加的欄位時,新欄位不會加到目標索引中,會在查詢時作為 runtime field 處理,支援後續指令碼計算和搜尋。

        更多動態映射的內容,詳情請參見動態映射

      • Shard數量Replica數量:索引的主分區及副本分區,用於將一個完整的索引分成多個分區,分布至不同的Elasticsearch節點上,構成分布式搜尋,提升Elasticsearch的查詢效率,詳情請參見基本概念

        說明

        Shard數量Replica數量參數,配置運行後不可更改,預設取值為1

    • 批量新增欄位:選中待同步的所有表,在表格底部選擇批量修改 > 目標索引結構-批量增加字段

目標表字段賦值

原生欄位會根據源端表和目標表的同名欄位進行自動對應,上述步驟中的新增欄位和目標索引屬性需要手動賦值。操作如下:

  • 單表賦值:單擊目標表字段賦值列的配置按鈕,為目標表欄位賦值。

  • 批量賦值:在列表底部選擇批量修改 > 目標表字段賦值為目標表中相同的欄位批量賦值。

在賦值時支援賦值常量與變數,可在賦值方式中進行切換類型,支援方式如下:

  • 目標表欄位

    • 手動賦值:直接輸入常量值,如:abc

    • 來源欄位:將源端表欄位的值作為目標欄位的值,其中取實值型別可選欄位值或者時間值。

      • 欄位值:將來源欄位的值直接寫入目標端。

      • 時間值:若來源欄位中的值為時間,可根據不同的格式進行相應處理,並指定目標格式對分取值進行格式化。

        • 時間字串:表示時間的字串,如:“2018-10-23 02:13:56”、“2021/05/18”。通過指定源端和目標端的時間格式的方式將其序列化為時間。如上文舉例的字串,可以使用yyyy-MM-dd HH:mm:ssyyyy/MM/dd的格式進行序列化來識別。

        • 時間對象:如果來源值本身是DateDatetime這種時間類型的格式,請直接選擇該類型。

        • Unix時間戳記(秒):秒層級時間戳記,也支援符合10位時間戳記格式的數字或字串,比如1610529203“1610529203”

        • Unix時間戳記(毫秒):毫秒層級時間戳記,也支援符合13位時間戳記格式的數字或字串,比如1610529203002“1610529203002”

    • 選擇變數:選擇系統提供的變數作為賦值來源。

    • 函數:支援通過函數對來源欄位進行簡單變換後作為分區值。使用方式詳見:使用函數運算式為目標表欄位賦值

  • 目標索引屬性賦值:為目標索引的同步主鍵進行賦值,可以將多個來源欄位進行拼接後組合成為索引主鍵。請注意所設定的值的唯一性。

源端切分列

您可以在源端切分列中下拉選擇源端表中的欄位或選擇不切分。同步任務執行時將根據該欄位切分為多個task,以便並發、分批讀取資料。

推薦使用表主鍵作為源端切分列,不支援字串、浮點和日期等其他類型。

目前僅源端為MySQL時支援源端切分列。

是否跳過全量同步

若已在步驟三配置全量同步,可以單獨取消同步某個表的全量資料同步。適用於已經通過其他方式將全量資料同步至目標端的情境。

全量條件

在全量階段對源端進行條件過濾。此處只需寫where子句,不需要寫出where關鍵字。

DML規則配置

DML訊息處理用於在資料寫入目標端之前,對源端捕獲的變更資料(InsertUpdateDelete)進行精細化的過濾與控制,此規則僅在增量階段生效。

步驟四:進階配置

進階參數配置

如果需要對任務做精細化配置,達到自訂同步需求,可以進入高級參數頁簽,修改進階參數。

  1. 單擊介面右上方的進階配置,進入進階參數配置頁面。

  2. 根據參數提示,修改參數值,參數含義見參數名稱後的解釋。

  3. 也支援使用AI配置,輸入自然語言修改指令,如調整任務並發數,由大模型產生參數推薦值,您可以根據實際情況選擇是否接受AI產生的參數。

    image

重要

請在完全明白對應參數的含義情況下再進行修改,避免產生任務延時、資源佔用過大導致阻塞其他任務、資料丟失等不可預料的問題。

DDL能力配置

即時同步部分鏈路可以感知源端表結構的中繼資料變更,並且通知目標端,使目標端同步更新,或採取其他諸如警示、忽略或終止運行等處理策略。

您可以單擊介面右上方的DDL能力配置,針對每一種變更類型設定對應的處理策略,不同的通道支援的處理策略不同。

  • 正常處理:由目標端處理源端的DDL變更資訊。

  • 忽略:忽略變更訊息,目標端不做修改。

  • 出錯:終止整庫即時同步任務,狀態置為出錯

  • 警示:當源端出現此類變更時,向使用者警示。需在報警配置中配置DDL通知規則。

說明

當源端新增列並通過DDL同步在目標端也建立了該列後,系統不會對目標表中的存量資料進行資料回填。

步驟五:發布並執行任務

  1. 完成所有配置後,單擊頁面底部的保存,完成任務配置。

  2. 整庫同步任務不支援直接調試,需要發布至運維中心運行。因此建立或者編輯任務均需執行发布操作後方可生效。

  3. 發布時,若勾選发布后直接启动运行,則在發布時會同步啟動任務。否則,發布完成後,需要進入數據集成 > 同步任務介面,在目標任務的操作列,手動啟動任務。

  4. 單擊任務列表中對應任務的名稱/ID,查看任務的詳細執行過程。

步驟六:警示配置

1.新增警示

數據集成 > 同步任務列表,找到對應的整庫即時任務,單擊操作列的更多 > 報警配置,可為任務配置警示策略。

image

(1) 單擊新建規則,配置警示規則。

您可以通過設定報警原因,對任務的業務延遲Failover任務狀態DDL通知任務資源利用率等指標進行監控,並根據指定的閾值設定CRITICAL或WARNING兩種不同層級的警示方式。

  • 通過設定高級參數配置,可以控制警示資訊發送的時間間隔,防止一次性發送資訊太多,造成浪費和訊息堆積。

  • 若警示原因選擇業務延遲任務狀態任務資源利用率,也支援開啟恢複通知,方便任務恢複正常後,通知接收人。

(2) 管理警示規則。

對於已建立的警示規則,您可以通過警示開關控制警示規則是否開啟,同時,您可以根據警示層級將警示發送給不同的人員。

2.查看警示

單擊展開工作清單的更多 > 報警配置,進入警示事件,可以查看已經發生的警示資訊。

管理工作

編輯任務

  1. 數據集成 > 同步任務介面,找到已建立的同步任務,單擊操作列的更多,單擊編輯,可以修改任務資訊,操作步驟同任務配置。

  2. 對於非運行狀態的任務,您可以直接修改配置並儲存,然後將任務發布至生產環境使其生效。

  3. 對於運行中的任務,編輯任務並發布時,若未選擇发布后直接启动运行,原有的操作按鈕將變為應用更新。您須單擊此按鈕,變更才會線上上環境中生效。

  4. 單擊應用程式更新後,系統會對變更內容執行"停止發布重啟"三個步驟。

    • 若變更方式為新增表或切換已有表

      更新應用時不支援選擇位點,單擊確認後,執行新表的結構遷移全量初始化,待全量初始化完成後,開始與其他原有表一起執行增量操作。

    • 若修改其他資訊:

      更新應用時支援選擇位點,單擊確認後,從指錨點繼續運行。若不指定,從上次停止的時間位點開始運行。

    未修改的表均不受影響,在更新重啟後,會從上次停止的時間點繼續運行。

查看任務

建立完成同步任務後,您可以在同步任務頁面查看當前已建立的同步工作清單及各個同步任務的基本資料。

  • 您可以在操作列啟動停止同步任務,在更多中可以對同步任務進行編輯查看等操作。image

  • 已啟動的任務您可以在執行概況中看到任務啟動並執行基本情況,也可以單擊對應的概況地區查看執行詳情。image

    MySQL到Elasticsearch的整庫即時同步任務分為三個步驟:

    • 結構遷移:包含目標表的建立方式(已有表/自動建表),如果是自動建表,會展示DDL語句。

    • 全量初始化:包含離線同步的表資訊、同步的進度、以及寫入的條數。

    • 即時資料同步:包含即時同步的統計資訊(即時的進度、DDL記錄、DML記錄和警示資訊)。

任務重跑

在某些特殊情況下,如果您需要增減表、修改目標表Schema資訊或者表名資訊時,您還可以單擊同步任務操作列的重跑,系統會將新增的表或有變更的表進行同步,之前同步過的表或者未修改的表將不會再進行同步。

  • 直接單擊重跑操作,重新運行全量初始化+即時同步。

  • 編輯任務,進行增減表操作後,儲存任務並發布。這個時候任務的操作列會顯示應用程式更新,單擊應用程式更新會直接觸發修改後的任務重跑。此時新增或變更的表才會進行同步,之前同步過的表不會再同步。

斷點續傳

適用情境

在任務啟動或重啟時,手動重設位點主要適用於以下情境:

  • 任務恢複與資料續傳:當任務因故中斷後,為確保資料從準確的斷點處恢複,可能需要手動指定一個停機時間點作為新的啟動位點。

  • 資料問題排查與回溯:若發現同步後的資料存在丟失或異常,可將位點回溯至問題發生前的時間點,對問題資料進行重放和修複。

  • 任務配置重大變更:在對任務配置(如目標索引結構、欄位對應等)進行重大調整後,建議重設位點從一個明確的時間點開始同步,以保證新配置下的資料準確性。

操作說明

單擊啟動,在彈窗中選擇是否重置位點

  • 不勾選重設位點,直接運行:繼續從上次停止的時間位點(最後一次checkpoint)運行。

  • 重設位點,並選擇時間:從指定的時間位點開始運行,注意選擇的時間不要超過源端的Binlog支援的最早時間位點。

重要

如果您在執行同步任務時提示位點錯誤或不存在,請按如下方式嘗試解決:

  • 重設位點:在啟動即時同步任務時,重設位點並選擇源庫可用的最早位點。

  • 調整日誌保留時間:如果資料庫位點到期,可以考慮在資料庫中調整日誌的保留時間,例如設定為7天。

  • 資料同步:如果資料已經丟失,可以考慮重新全量同步,或者配置一個離線同步任務來手動同步丟失的資料。

常見問題

整庫即時常見問題參見:Data Integration常見問題Data Integration報錯