遷移ECS自建MySQL數(shù)據(jù)庫至MaxCompute
本文為您介紹如何使用獨(dú)享數(shù)據(jù)集成資源,將您在ECS上自建的MySQL數(shù)據(jù)庫中的數(shù)據(jù),遷移到MaxCompute。
前提條件
已擁有至少一個綁定專有網(wǎng)絡(luò)VPC的ECS(請勿使用經(jīng)典網(wǎng)絡(luò)),并在ECS上安裝好MySQL數(shù)據(jù)庫,數(shù)據(jù)庫中已創(chuàng)建好用戶和測試數(shù)據(jù)。本文中ECS自建MySQL的測試數(shù)據(jù)創(chuàng)建語句如下。
CREATE TABLE IF NOT EXISTS good_sale( create_time timestamp, category varchar(20), brand varchar(20), buyer_id varchar(20), trans_num varchar(20), trans_amount DOUBLE, click_cnt varchar(20) ); insert into good_sale values('2018-08-21','coat','brandA','lilei',3,500.6,7), ('2018-08-22','food','brandB','lilei',1,303,8), ('2018-08-22','coat','brandC','hanmeimei',2,510,2), ('2018-08-22','bath','brandA','hanmeimei',1,442.5,1), ('2018-08-22','food','brandD','hanmeimei',2,234,3), ('2018-08-23','coat','brandB','jimmy',9,2000,7), ('2018-08-23','food','brandA','jimmy',5,45.1,5), ('2018-08-23','coat','brandE','jimmy',5,100.2,4), ('2018-08-24','food','brandG','peiqi',10,5560,7), ('2018-08-24','bath','brandF','peiqi',1,445.6,2), ('2018-08-24','coat','brandA','ray',3,777,3), ('2018-08-24','bath','brandG','ray',3,122,3), ('2018-08-24','coat','brandC','ray',1,62,7) ;
請記錄好您的ECS的私有IP、專有網(wǎng)絡(luò)和虛擬交換機(jī)信息。
ECS上的安全組已放通MySQL數(shù)據(jù)庫所使用的端口(默認(rèn)為3306),詳情請參見添加安全組規(guī)則,請記錄好您的安全組名稱。
已成功創(chuàng)建DataWorks工作空間。本文使用DataWorks簡單模式工作空間,計算引擎為MaxCompute。請保證您的ECS與DataWorks工作空間處于同一個地域,創(chuàng)建方法請參見創(chuàng)建工作空間。
已完成獨(dú)享數(shù)據(jù)集成資源的購買,并且綁定了ECS所在的專有網(wǎng)絡(luò)VPC。請注意獨(dú)享資源組必須與ECS同一可用區(qū),詳情請參見新增和使用獨(dú)享數(shù)據(jù)集成資源組。完成綁定后,您可以在資源組列表查看到您的獨(dú)享資源組。
在
處查看專有網(wǎng)絡(luò)、交換機(jī)和安全組信息是否和ECS一致。已新增MaxCompute數(shù)據(jù)源。詳情請參見創(chuàng)建MaxCompute數(shù)據(jù)源。
背景信息
獨(dú)享資源可以保障您的數(shù)據(jù)快速、穩(wěn)定地傳輸。您購買的獨(dú)享數(shù)據(jù)集成資源和需要訪問的數(shù)據(jù)源(即本文中的ECS自建MySQL數(shù)據(jù)庫)必須在同地域同可用區(qū),且和DataWorks工作空間同地域。
操作步驟
在DataWorks上創(chuàng)建MySQL數(shù)據(jù)源。
進(jìn)入數(shù)據(jù)源頁面。
登錄DataWorks控制臺,切換至目標(biāo)地域后,單擊左側(cè)導(dǎo)航欄的管理中心,在下拉框中選擇對應(yīng)工作空間后單擊進(jìn)入管理中心。
進(jìn)入工作空間管理中心頁面后,單擊左側(cè)導(dǎo)航欄的
,進(jìn)入數(shù)據(jù)源頁面。
單擊新增數(shù)據(jù)源。
在新增數(shù)據(jù)源對話框,單擊MySQL。
在創(chuàng)建MySQL數(shù)據(jù)源對話框中,配置各項參數(shù),詳情請參見配置MySQL數(shù)據(jù)源。
本文以連接串模式為例,在連接地址處輸入您剛剛記錄的ECS私有地址和MySQL的默認(rèn)端口號3306。
說明當(dāng)前VPC環(huán)境下的自建MySQL數(shù)據(jù)源暫不支持測試連通性,因此連通性測試失敗是正常現(xiàn)象。
單擊相應(yīng)資源組后的測試連通性。
數(shù)據(jù)同步時,可使用獨(dú)享數(shù)據(jù)集成資源組。任務(wù)每次運(yùn)行只能使用一個資源組,如有多個可選擇的資源組,需單獨(dú)測試所選資源組的連通性,以保證同步任務(wù)使用的資源組能夠與數(shù)據(jù)源連通,否則將無法正常執(zhí)行數(shù)據(jù)同步任務(wù)。詳情請參見網(wǎng)絡(luò)連通方案。
測試連通性通過后,單擊完成。
創(chuàng)建MaxCompute表。
您需要通過DataWorks創(chuàng)建一個表,用于接收來自MySQL的測試數(shù)據(jù)。
單擊左上角的圖標(biāo),選擇 。
新建一個業(yè)務(wù)流程,詳情請參見創(chuàng)建周期業(yè)務(wù)流程。
右鍵單擊新建的業(yè)務(wù)流程,選擇 。
輸入您的MaxCompute表名稱,本例中使用和MySQL數(shù)據(jù)庫表一樣的名稱good_sale。單擊DDL后,輸入您的建表語句并生成表結(jié)構(gòu)。
本例中使用的建表語句如下,請注意數(shù)據(jù)類型的轉(zhuǎn)換。
CREATE TABLE IF NOT EXISTS good_sale( create_time string, category STRING, brand STRING, buyer_id STRING, trans_num BIGINT, trans_amount DOUBLE, click_cnt BIGINT );
輸入表的中文名后,單擊提交到生產(chǎn)環(huán)境,完成MaxCompute表good_sale的創(chuàng)建。
配置數(shù)據(jù)集成任務(wù)。
右鍵單擊業(yè)務(wù)流程,選擇 ,創(chuàng)建一個數(shù)據(jù)集成任務(wù)。
選擇您的數(shù)據(jù)來源為您剛添加的MySQL數(shù)據(jù)源,數(shù)據(jù)去向選擇已添加的MaxCompute數(shù)據(jù)源,單擊轉(zhuǎn)換腳本切換數(shù)據(jù)集成任務(wù)為腳本模式。
此時,如果產(chǎn)生報錯或您無法選擇數(shù)據(jù)來源的表,都屬于正常現(xiàn)象,直接轉(zhuǎn)換為腳本模式即可。
單擊頁面右側(cè)的數(shù)據(jù)集成資源組配置,選中已購買的獨(dú)享資源組。
如果未切換任務(wù)資源組為數(shù)據(jù)集成獨(dú)享資源,后續(xù)您的任務(wù)將無法成功運(yùn)行。
填寫數(shù)據(jù)集成任務(wù)腳本內(nèi)容如下。
{ "type": "job", "steps": [ { "stepType": "mysql", "parameter": { "column": [//源列名 "create_time", "category", "brand", "buyer_id", "trans_num", "trans_amount", "click_cnt" ], "connection": [ { "datasource": "shuai",//源數(shù)據(jù)源 "table": [ "good_sale"http://源數(shù)據(jù)庫表名,此處必須為方括號數(shù)組格式。 ] } ], "where": "", "splitPk": "", "encoding": "UTF-8" }, "name": "Reader", "category": "reader" }, { "stepType": "odps", "parameter": { "partition": "", "truncate": true, "datasource": "odps_source",//目標(biāo)MaxCompute數(shù)據(jù)源名稱 "column": [//目標(biāo)列名 "create_time", "category", "brand", "buyer_id", "trans_num", "trans_amount", "click_cnt" ], "emptyAsNull": false, "table": "good_sale"http://目標(biāo)表名 }, "name": "Writer", "category": "writer" } ], "version": "2.0", "order": { "hops": [ { "from": "Reader", "to": "Writer" } ] }, "setting": { "errorLimit": { "record": "0" }, "speed": { "throttle": false, "concurrent": 2 } } }
單擊運(yùn)行,您可以在下方的運(yùn)行日志查看數(shù)據(jù)是否已傳輸?shù)組axCompute。
執(zhí)行結(jié)果
您可以新建一個ODPS SQL類型的節(jié)點(diǎn),用于查詢當(dāng)前MaxCompute表中的數(shù)據(jù)。
輸入您的查詢語句select * from good_sale ;
,單擊運(yùn)行,即可看到當(dāng)前已傳入MaxCompute表中的數(shù)據(jù)。