DataX是異構數據源離線同步的工具,支持多種異構數據源之間高效的數據同步。Dataphin系統內嵌了DataX組件,支持通過構建Shell任務調用DataX,實現數據同步。本教程以RDS MySQL數據庫為例,為您介紹基于Dataphin如何調用DataX同步數據。
前提條件
已開通RDS MySQL實例,且RDS MySQL實例的網絡類型為專有網絡。如何開通RDS MySQL實例,請參見快速創建RDS MySQL實例。
已創建RDS MySQL實例的數據庫和賬號,創建過程中需要您記錄數據庫名稱、用戶名和密碼。如何創建數據庫和賬號,請參見創建數據庫和賬號。
背景信息
Dataphin系統內嵌了DataX組件,在Dataphin中創建和運行DataX任務(Shell任務)即可將DataX調用起來,以實現數據同步。
DataX支持同步數據的數據源包括MySQL、Oracle、SQL Server、PostgreSQL、HDFS、Hive、HBase等。DataX的更多信息,請參見DataX。
使用限制
Shell任務不支持通過內網地址訪問RDS MySQL實例。
操作流程
功能 | 描述 |
在您開始同步數據前,首先需要連通RDS MySQL實例和Dataphin間的網絡。 | |
登錄至RDS MySQL實例,創建本教程中用于數據同步的源表和目標表。 | |
下載并配置DataX任務的代碼模板后,保存為datax.json。 | |
上傳DataX任務代碼文件至Dataphin平臺后,DataX任務即可調用。 | |
在開發環境創建并運行同步數據的DataX任務。 | |
在生產環境運行DataX任務,保障生產環境業務數據的正常產出。 |
步驟一:連通RDS MySQL實例與Dataphin間的網絡
申請RDS MySQL實例的外網地址。如何申請外網地址,請參見申請或釋放外網地址。
在數據庫連接頁面,獲取RDS MySQL實例的外網地址和端口。
添加RDS MySQL實例的外網地址和端口至Dataphin項目空間的沙箱白名單。如何添加沙箱白名單,請參見添加項目成員。
添加
0.0.0.0/0
至RDS MySQL實例的白名單。如何添加白名單,請參見通過客戶端、命令行連接RDS MySQL實例。重要完成數據同步后,請立即刪除
0.0.0.0/0
。
步驟二:創建數據同步的源表和目標表
使用命令行方式連接RDS MySQL實例,請參見通過客戶端、命令行連接RDS。創建同步數據的源數據表和目標數據表:
創建源數據表的代碼示例如下。
create table datax_test1( area varchar(255),province varchar(255) ); insert into datax_test1 values('華北','山東省'),('華南','河南省');
創建目標數據表的代碼示例如下。
create table datax_test2( area varchar(255),province varchar(255) );
步驟三:下載并配置DataX任務的代碼模板
下載DataX任務的代碼模板。
配置代碼模板中的如下參數后,保存為datax.json至本地。
參數
描述
{username}
配置為已創建RDS MySQL實例的用戶名,即登錄數據庫的用戶名。
{password}
登錄數據庫的密碼。本教程中配置為前提條件已創建RDS MySQL實例的密碼,即登錄數據庫的密碼。
{{Public Endpoint}:}
鏈接地址。本教程配置為已獲取的RDS MySQL實例的外網地址。
{DatabaseName}
數據庫名稱。本教程配置為前提條件中已創建的RDS MySQL實例的數據庫名稱。
{table_name1}
源數據表的表名。本教程配置為datax_test1。
{table_name2}
目標數據表的表名。本教程配置為datax_test2。
{columnname1}
數據同步的字段。本教程配置為area。
{columnname2}
數據同步的字段。本教程配置為province。
代碼模板的代碼如下。
{ "job": { "content": [ { "reader": { "name": "mysqlreader", "parameter": { "column": [ "{columnname1}", "{columnname2}" ], "connection": [ { "jdbcUrl": ["jdbc:mysql://{Public Endpoint}:3306/{DatabaseName}"], "table": ["{table_name1}"] } ], "password": "{password}", "username": "{username}" } }, "writer": { "name": "mysqlwriter", "parameter": { "column": [ "{columnname1}", "{columnname2}" ], "connection": [ { "jdbcUrl": "jdbc:mysql://{Public Endpoint}:3306/{DatabaseName}", "table": ["{table_name2}"] } ], "password": "{password}", "username": "{username}" } } } ], "setting": { "speed": { "channel": "1" } } } }
步驟四:上傳datax.json文件至Dataphin
登錄Dataphin控制臺。
在Dataphin控制臺頁面,選擇工作區地域后,單擊進入Dataphin>>。
在Dataphin首頁,單擊研發。
在數據開發頁面,單擊數據處理。
在數據處理頁面的左側導航欄,單擊資源管理圖標。
在資源管理頁面,單擊資源管理后的圖標。
在新建資源對話框中,配置參數后,單擊提交。
參數
描述
類型
本教程中需要上傳的文件格式為JSON,則類型選擇others。
系統支持選擇的類型包括file、jar、python和others,適用場景說明如下:
上傳的文件格式為XLS、DOC、TXT、CSV,則類型選擇為file。
上傳的文件格式為JAR,則類型選擇為jar。
上傳的文件格式為PY,則類型選擇為python。
上傳的文件格式非XLS、DOC、TXT、CSV、JAR、PY,則類型選擇為others。
名稱
本教程中的名稱為datax.json。
本教程名稱的命名規則如下:
名稱必須以.json結尾。
字母、數字、下劃線(_)或半角句號(.)組合組成。
不能以數字開頭。
描述
填寫資源的描述,例如DataX test。
上傳文件
選擇步驟三:下載并配置DataX任務的代碼模板中保存至本地的datax.json文件。
計算類型
本教程中上傳的資源(datax.json)用于DataX代碼任務中引用,因此選擇無歸屬引擎。
計算類型用于定義資源文件是否需要上傳至計算引擎的存儲層。Dataphin系統支持的計算類型包括MaxCompute、Flink和無歸屬引擎,適用場景說明如下:
自定義MaxCompute類型的函數時,計算類型選擇為MaxCompute。
自定義Flink類型的函數時,計算類型選擇為Flink。
代碼任務引用的資源文件,計算類型選擇為無歸屬引擎。
選擇目錄
默認為資源管理。
在提交備注對話框,填寫備注信息后,單擊確定并提交。
發布資源文件至生產環境。
在數據開發頁面,單擊頂部菜單欄的發布。
在待發布對象列表頁面,單擊數據處理頁簽。
在數據處理頁簽,單擊datax.json資源的操作列下的圖標。
在發布對話框,填寫發布名稱或備注信息后,單擊確定,即可將資源文件發布至生產環境。
單擊左側導航欄的發布記錄列表。在發布記錄列表頁面,查看資源文件的發布狀態為發布成功即可。
步驟五:創建DataX任務
請參見步驟四:上傳datax.json文件至Dataphin,進入數據開發頁面。
在數據開發頁面,單擊左側區域的數據處理。
在數據處理頁面,單擊左側導航欄計算任務圖標。
在計算任務頁面,單擊計算任務后的圖標,選擇 。
在新建文件對話框,配置參數后,單擊確定。
參數
描述
名稱
本教程中的名稱為DataX。
調度類型
本教程中選擇任務的調度類型為手動節點。
調度類型用于定義任務發布至生產環境的調度方式。Datpahin系統支持的調度類型包括周期性節點和手動節點,適用場景說明如下:
任務需要參與系統的周期性調度,且需要依賴上游節點,則調度類型選擇為周期性節點。
任務不需要參與系統的周期性調度,且需要依賴上游節點,則調度類型選擇為手動節點。該類型的任務在生產環境的運行需要您手動觸發。
描述
填寫對任務的簡單描述,例如測試DataX。
選擇目錄
默認為計算任務。
在代碼編寫頁面,編寫并運行DataX任務的代碼。
代碼如下。
@resource_reference{"datax.json"} python $DATAX_HOME/bin/datax.py datax.json #Dataphin系統已內置DataX的安裝目錄為DATAX_HOME/bin/datax.py。
其中,resource_reference{}用于調用已上傳的datax.json資源文件。
單擊頁面右上角的執行,即可運行DataX任務。
運行結果顯示的讀寫失敗總數為0時,表示DataX任務同步數據成功。
發布DataX任務至生產環境。
在計算任務頁面,單擊頂部菜單欄的發布。
在待發布對象列表頁面,單擊數據處理頁簽。
在數據處理頁簽,單擊DataX任務的操作列下的圖標。
在發布對話框,填寫發布名稱或備注信息后,單擊確定,即可將DataX任務發布至生產環境。
單擊左側導航欄的發布記錄列表。在發布記錄列表頁面,查看DataX任務的發布狀態為發布成功即可。
步驟六:運行生產環境中的DataX任務
請參見步驟四:上傳datax.json文件至Dataphin,進入數據開發頁面。
在數據開發頁面,單擊頂部菜單欄的運維。
在運維中心,單擊項目名稱后的圖標,切換至生產環境()。
在運維中心,運行DataX任務。
單擊左側導航欄的圖標。
在手動任務運維列表頁面,單擊DataX任務。
在DataX任務的詳情頁面,單擊頁面左上角的運行。
在運行對話框,保持默認參數,單擊確定。
查看DataX任務運行生成的實例運行日志。
單擊左側導航欄的圖標。
在手動實例運維列表頁面,單擊DataX任務。
在DataX任務的詳情頁面,單擊頁面上方的查看運行日志。
在運行日志頁面,查看讀寫失敗總數。
運行日志顯示的讀寫失敗總數為0時,表示DataX任務在生產環境同步數據成功,即可保障生產環境業務數據正常產出。