全部產品
Search
文件中心

DataWorks:配置MySQL輸入

更新時間:Aug 07, 2025

MySQL輸入基於Binlog即時訂閱的方式,即時讀取您配置的MySQL資料庫表資料。本文為您介紹,如何配置MySQL輸入,以及配置輸入之前需要準備的網路環境及帳號許可權。

前提條件

配置MySQL輸入之前,請確保已完成以下規劃與準備工作。

  • 已配置同步帳號許可權,詳情請參見配置帳號許可權

    即時同步通過資料來源配置帳號訪問MySQL,在即時同步情境下,您需要確保此帳號擁有資料庫的SELECTREPLICATION SLAVEREPLICATION CLIENT許可權。

  • 已開啟MySQL Binlog服務,詳情請參見開啟MySQL Binlog

    Data Integration通過即時訂閱MySQL Binlog實現增量資料即時同步,您需要在DataWorks配置同步任務前,先開啟MySQL Binlog服務。

  • 已購買合適規格的獨享Data Integration資源群組。詳情請參見新增和使用獨享Data Integration資源群組

  • 已配置資料同步資源群組與資料庫的網路連通,詳情請參見網路連通方案

使用限制

  • Data Integration不支援同步MySQL唯讀庫執行個體的資料。

  • DataWorks的Data Integration即時同步MySQL資料是基於即時訂閱MySQL實現的,即時同步MySQL資料目前僅支援配置MySQL資料來源為RDS的5.x8.x版本的MySQL,如果需要同步DRDS的MySQL,請不要將DRDS的MySQL配置為MySQL資料來源,您可以參考配置DRDS資料來源文檔直接將其配置為DRDS資料來源。

  • 不支援Functional index。

配置MySQL輸入

  1. 進入資料開發頁面。

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

  2. 滑鼠移至上方至建立表徵圖,單擊建立節點 > Data Integration > 即時同步

    您也可以展開商務程序,按右鍵目標商務程序,選擇建立節點 > Data Integration > 即時同步

  3. 建立節點對話方塊中,選擇同步方式單表(Topic)到單表(Topic)ETL,輸入名稱,並選擇路徑

  4. 單擊確認

  5. 在即時同步節點的編輯頁面,單擊輸入 > MySQL並拖拽至編輯面板。

  6. 單擊MySQL節點,在節點配置對話方塊中,配置各項參數。

    輸入

    參數

    描述

    資料來源

    選擇已經配置好的MySQL資料來源,此處僅支援MySQL資料來源。

    如果未配置資料來源,請單擊右側的建立資料來源,進入工作空間配置 > 資料來源頁面進行建立。

    選擇當前資料來源下需要同步的表名稱。您可以單擊右側的資料預覽進行確認。

    您可以實現分庫分表的情境,配置的庫和表會在該任務中同時進行即時同步。

    重要

    分庫分表中的資料表的Schema(即表結構,包含欄位數量、欄位類型、欄位名稱、欄位順序)請保持一致,以避免執行報錯。

    輸出欄位

    選擇需要同步的欄位,包括管理欄位資料欄位

    • 管理欄位:為方便進行資料管理、排序和去重等操作,會在同步的目標端自動添加附加欄位。

    • 資料欄位:顯示要同步的原始表中對應的欄位。

    詳情請參見即時同步欄位格式

    MySQL節點支援分庫分表,您可以單擊添加分庫分表資料來源,從下拉式清單中選擇相應的資料來源,添加多個資料來源,同時進行同步。

  7. 單擊工具列中的儲存表徵圖。

常見問題

  • 即時同步MySQL資料來源的資料時,一開始讀到資料。一段時間後無法讀到資料,怎麼處理?

    1. 可在資料庫執行以下命令,查看當前這個資料庫執行個體正在寫入的binlog檔案。

      show master status 
    2. 對比日誌中讀到的binlog檔案,在日誌中搜journalName=MySQL-bin.000001,position=50,確認是否有資料寫入資料庫。

    3. 如果有資料在寫入,但是binlog卻沒有往前推進,請聯絡DBA處理。

  • MySQL即時同步報錯Cannot replicate because the master purged required binary logs.

    • 解答:MySQL即時同步報錯:Cannot replicate because the master purged required binary logs. Replicate the missing transactions from elsewhere, or provision a new slave from backup.時,可能是因為在MySQL未找到消費位點的binlog記錄,請檢查您MySQL的binlog保留時間,同步任務啟動時請將該位點配置在這個時間範圍內。如果您訂閱不到binlog,可以嘗試重設位點到目前時間。

  • MySQL即時同步報錯MySQLBinlogReaderException

    • 解答:MySQL即時同步報錯:MySQLBinlogReaderException: The database you are currently syncing is the standby database, but the current value of log_slave_updates is OFF, you need to enable the binlog log update of the standby database first. 時,可能是因為備庫沒有開啟binlog,如果您要同步備庫,需要做備庫級聯開啟binlog,可以找DBA尋求協助。

      開啟binlog的操作詳情可參見開啟MySQL的Binlog

  • MySQL即時同步報錯show master status' has an error!

    • 解答:MySQL即時同步報錯:show master status' has an error!,報錯詳情為Caused by: java.io.IOException: message=Access denied; you need (at least one of) the SUPER, REPLICATION CLIENT privilege(s) for this operation, with command: show master status時,可能是因為資料來源沒有開啟對應資料庫的許可權。

      資料來源配置帳號需要擁有資料庫的SELECT、REPLICATION SLAVE、REPLICATION CLIENT許可權。給資料來源添加資料庫對應許可權的操作詳情可參見步驟2:建立帳號並配置許可權

  • MySQL即時同步報錯parse.exception.PositionNotFoundException: can't find start position for xx

    • 解答:同步未找到位點,請重設位點。

  • MySQL即時同步報錯:資料庫位點到期,請重新選擇位點,源庫可用最早位點xxx。

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

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

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

  • 即時同步是否支援將單庫多表的不同欄位進行合并?比如A表為a、b欄位,B表為a、c欄位,同步之後為a、b、c欄位?

    • 不支援。只支援Schema完全一致的多表進行即時同步。