玩转DB里的数据—阿里云DMS任务编排之简介和实操
1.任務(wù)編排介紹
數(shù)據(jù)庫是企業(yè)IT系統(tǒng)里的重要基礎(chǔ)設(shè)施,里面存儲了大量有價值的數(shù)據(jù)資產(chǎn),如:交易數(shù)據(jù)、客戶數(shù)據(jù)、訂單數(shù)據(jù),等等。其實,數(shù)據(jù)庫在企業(yè)里一直扮演著一個數(shù)據(jù)生產(chǎn)者(Producer)的角色,日積月累這些數(shù)據(jù)會形成一個巨大的寶藏。但是,隨著數(shù)據(jù)庫中數(shù)據(jù)量的增長和數(shù)據(jù)形態(tài)的多樣化,如何對數(shù)據(jù)進(jìn)行存儲、遷移和加工,并挖掘出其中的價值,是許多企業(yè)面臨的難題。
為解決上述問題,阿里云DMS(Data Management Service)產(chǎn)品近期推出了一個新功能——任務(wù)編排。無論您的數(shù)據(jù)庫部署在何處(阿里云/本地IDC/其他云廠商等),是何種類型(OLTP交易型數(shù)據(jù)庫/OLAP分析型數(shù)據(jù)庫),DMS任務(wù)編排都能夠觸達(dá)您的數(shù)據(jù)庫,讓您輕松地對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行流轉(zhuǎn)、加工和變換。DMS任務(wù)編排提供的主要功能和特性包括:
- 豐富的數(shù)據(jù)遷移能力:可實現(xiàn)數(shù)據(jù)庫與數(shù)據(jù)庫之間(如:OLTP在線庫與OLAP離線庫)、數(shù)據(jù)庫與彈性存儲之間(如:MySQL與OSS)的數(shù)據(jù)自由流動;
- 豐富的數(shù)據(jù)加工手段:單庫SQL任務(wù)、跨庫SQL任務(wù)、數(shù)據(jù)遷移任務(wù)、Spark任務(wù)、數(shù)據(jù)備份與恢復(fù)服務(wù)(建設(shè)中);不僅可以通過SQL語句對單個數(shù)據(jù)庫或多個數(shù)據(jù)庫里的數(shù)據(jù)進(jìn)行加工,還可編寫Spark任務(wù)進(jìn)行復(fù)雜的數(shù)據(jù)處理和AI分析;
- 任務(wù)流和定時調(diào)度:通過可視化的方式將多個任務(wù)節(jié)點進(jìn)行編排形成任務(wù)流,靈活按需設(shè)置多種不同粒度間隔的定時調(diào)度;
- 按模板一鍵創(chuàng)建任務(wù)流:為不同的場景(如:歷史數(shù)據(jù)歸檔到OSS)內(nèi)置了任務(wù)流模板,用戶可一鍵生成模板任務(wù)流,通過簡單的配置即可應(yīng)用于生產(chǎn);
- 牢靠的數(shù)據(jù)安全保障:依托DMS強(qiáng)大的數(shù)據(jù)安全能力,任務(wù)編排會對用戶權(quán)限進(jìn)行嚴(yán)格檢查,僅限有權(quán)限的用戶才能執(zhí)行相應(yīng)的任務(wù)。
了解了DMS任務(wù)編排的功能,你一定開始好奇用DMS任務(wù)編排能做什么?下圖展示了DMS任務(wù)編排支持的四類主要場景:
場景1:數(shù)據(jù)歸檔
目前比較流行的有兩類數(shù)據(jù)庫:傳統(tǒng)單機(jī)版數(shù)據(jù)庫(如:MySQL)和云原生數(shù)據(jù)庫(如:阿里云PolarDB和AnalyticDB for MySQL)。前者的存儲空間是有限的,后者雖然可以對存儲擴(kuò)容,但也要收取較高的費用。那么,當(dāng)數(shù)據(jù)庫中的數(shù)據(jù)量持續(xù)增長時,該如何降低存儲成本呢?許多用戶希望能將數(shù)據(jù)庫中的冷數(shù)據(jù)/歷史數(shù)據(jù)轉(zhuǎn)儲到可靠又低價的存儲上,如:阿里云對象存儲(OSS)?,F(xiàn)在通過DMS任務(wù)編排,可輕松實現(xiàn)數(shù)據(jù)庫數(shù)據(jù)周期歸檔(如:每日/每周)到OSS的需求。同時,DMS還有好地對接了阿里云數(shù)據(jù)湖分析產(chǎn)品(DLA),用戶可在DMS里方便地訪問DLA,對歸檔到OSS上的數(shù)據(jù)進(jìn)行即席查詢和分析。
場景2:數(shù)據(jù)集成
企業(yè)的數(shù)據(jù)可能分散在不同的數(shù)據(jù)源中(如:MySQL、SQL Server),也可能分散在不同的地域(例如:北京、杭州、深圳)。導(dǎo)致數(shù)據(jù)分散的原因有很多,比如:業(yè)務(wù)的垂直劃分、微服務(wù)、應(yīng)用的本地部署等等。數(shù)據(jù)的分散不可避免,但同時許多企業(yè)又有數(shù)據(jù)集成的需求,需要將各地的數(shù)據(jù)匯聚到一起進(jìn)行全局分析(如:匯總和AI分析),典型的場景就是OLTP交易庫的數(shù)據(jù)同步至OLAP分析庫做離線分析。通過DMS任務(wù)編排,可以輕松實現(xiàn)這一需求。首先,DMS打通了各種網(wǎng)絡(luò)環(huán)境(如:阿里云VPC/經(jīng)典網(wǎng)絡(luò),本地IDC網(wǎng)絡(luò)),可連接至各個地域的數(shù)據(jù)源。其次,DMS支持異構(gòu)數(shù)據(jù)源間的數(shù)據(jù)集成,如:RDS MySQL到AnalyticDB。此外,通過DMS任務(wù)編排,還能滿足各種集成方式的需求,如:單次全量集成、周期性增量集成。
場景3:數(shù)據(jù)加工
做完數(shù)據(jù)集成之后,用戶通常還要對匯聚的原始數(shù)據(jù)進(jìn)行加工、清洗和分析,才能挖掘出其中的價值,例如:每日統(tǒng)計產(chǎn)品的用戶數(shù)(UV),按周產(chǎn)生報表數(shù)據(jù)。DMS任務(wù)編排提供了任務(wù)流和定時調(diào)度能力,通過任務(wù)流可以將復(fù)雜加工任務(wù)進(jìn)行拆解和編排,然后配置調(diào)度信息。DMS支持單次調(diào)度和周期調(diào)度(如:按日、周、月),此外還支持多類型的加工任務(wù),用戶可使用SQL進(jìn)行數(shù)據(jù)加工,也可編寫Spark程序進(jìn)行復(fù)雜的數(shù)據(jù)處理和AI分析。通過豐富的調(diào)度配置和任務(wù)類型,DMS任務(wù)編排能滿足各種簡單/復(fù)雜場景的數(shù)據(jù)加工需求。
場景4:定時操作
在日常數(shù)據(jù)庫的使用中,有許多DML/DDL/DCL操作需要定期執(zhí)行,如:每周清理歷史數(shù)據(jù)(DELETE)防止表過大、每日更新統(tǒng)計信息(ANALYZE TABLE)以獲得更好的查詢優(yōu)化結(jié)果。有些數(shù)據(jù)庫在內(nèi)核層面已經(jīng)提供了事件調(diào)度功能,如:MySQL Event,但是使用特殊的語法創(chuàng)建Event和維護(hù)Event都有一定的成本。DMS任務(wù)編排的調(diào)度功能提供了可視化的方式輕松創(chuàng)建定時任務(wù),并且不依賴數(shù)據(jù)庫引擎上的能力,因此更加簡易靈活,適用范圍更廣。
2.任務(wù)編排實操 — DB數(shù)據(jù)周期歸檔
介紹完DMS任務(wù)編排的功能和使用場景,下面將以數(shù)據(jù)歸檔場景為例,介紹如何通過DMS任務(wù)編排和阿里云DLA服務(wù)將RDS MySQL數(shù)據(jù)周期地歸檔至OSS上。具體的實操步驟還可查閱DMS的使用文檔。
2.1 背景和需求
用戶的RDS MySQL業(yè)務(wù)庫中某張表(如:交易記錄、登錄/操作日志)的數(shù)據(jù)持續(xù)增長,占用了大量的存儲空間,甚至影響到了數(shù)據(jù)庫性能。同時,這部分?jǐn)?shù)據(jù)又是有價值的,比如:用于審計、報表和統(tǒng)計分析,不能隨意刪除。為解決這個問題,用戶有三個核心的需求:
? 降低MySQL業(yè)務(wù)庫的存儲壓力;
? 對歷史業(yè)務(wù)數(shù)據(jù)做增量歸檔;
? 對歸檔數(shù)據(jù)做分區(qū),可按分區(qū)過濾進(jìn)行高效查詢。
為滿足這三個需求,我們選擇了阿里云DLA服務(wù),因為其同時打通了OSS和RDS MySQL,能夠?qū)ι厦娴臄?shù)據(jù)進(jìn)行遷移和即席分析。但是,DLA并不具備周期調(diào)度和增量數(shù)據(jù)遷移的能力,DMS任務(wù)編排正好可以與DLA互補(bǔ),形成完整的解決方案滿足用戶需求。
在下面的實操中,我們假設(shè)用戶RDS MySQL中待歸檔的表為訂單表orders,其表結(jié)構(gòu)如下(created_date字段為訂單創(chuàng)建日期):
create table orders(order_id bigint,product_name varchar(32),price double,total_amount double,created_date date );2.2前置條件
1、已購買阿里云DLA服務(wù),且DLA服務(wù)的區(qū)域(Region)和待歸檔的RDS MySQL區(qū)域一致,如:都是華東1(杭州)
2、已開通阿里云OSS服務(wù),且服務(wù)的區(qū)域與DLA、RDS MySQL一致
3、已購買阿里云DMS服務(wù)
4、DLA實例已錄入DMS中(請參考DMS實例錄入)
各產(chǎn)品的購買要求和用途:
| DMS | 無限制 | 周期調(diào)度 |
| DLA | 與RDS MySQL同區(qū)域 | RDS MySQL數(shù)據(jù)遷移至OSS;查詢OSS上的歸檔數(shù)據(jù) |
| OSS | 與RDS MySQL同區(qū)域 | 存儲RDS MySQL歸檔的數(shù)據(jù) |
2.3 配置任務(wù)流
下面介紹如何在DMS中操作實現(xiàn)RDS MySQL數(shù)據(jù)周期歸檔,主要包含5個步驟:
步驟1:創(chuàng)建DLA歸檔庫
若要將數(shù)據(jù)歸檔至DLA上,首先要在DLA中創(chuàng)建一個用于歸檔的schema,用于存放歸檔表。在DMS首頁的頂部菜單中,找到SQLConsole單庫查詢,并打開查詢窗口,然后輸入如下SQL語句并執(zhí)行:
CREATE DATABASE demo_schema WITH DBPROPERTIES (catalog = 'oss',location = 'oss://xxxxxx/dla_demo/' )步驟2:創(chuàng)建任務(wù)流
在DMS首頁的頂部菜單中,選擇數(shù)據(jù)工廠 -> 任務(wù)編排,進(jìn)入任務(wù)編排的首頁。在首頁點擊“新建任務(wù)流”,或者點擊左側(cè)tab進(jìn)入開發(fā)空間,也可以快速地找到新建任務(wù)流的入口。在新建任務(wù)流的窗口,我們將任務(wù)流名稱設(shè)為:rds_data_to_oss。
步驟3:配置任務(wù)節(jié)點
在任務(wù)流rds_data_to_oss中,依次新建三個DLA-SQL類型的任務(wù)節(jié)點:
節(jié)點創(chuàng)建完以后,可在節(jié)點間添加連線,對節(jié)點的執(zhí)行順序進(jìn)行編排,產(chǎn)生完整任務(wù)流。
下面對每個節(jié)點的內(nèi)容進(jìn)行設(shè)置:
節(jié)點1:創(chuàng)建RDS同步Schema
要讓DLA順利訪問RDS MySQL的數(shù)據(jù),需要在DLA中為RDS MySQL創(chuàng)建一個Schema,取名: dla_mysql_rds。我們將以SQL的方式來創(chuàng)建Schema。首先,點擊第一個任務(wù)節(jié)點,在右側(cè)的內(nèi)容設(shè)置Tab頁中,輸入如下SQL語句(其中部分參數(shù)需替換為RDS上的真實信息):
CREATE SCHEMA IF NOT EXISTS dla_mysql_rds WITH DBPROPERTIES (CATALOG = 'mysql', LOCATION = 'jdbc:mysql://xxxxxx.rds.aliyuncs.com:3306/dmstest',USER = 'dmstest',PASSWORD = 'xxxxxxxxx',INSTANCE_ID = 'xxxxxx');MSCK REPAIR DATABASE dla_mysql_rds;此外,為了讓DLA順利訪問RDS MySQL,還需要在RDS MySQL中添加DLA的白名單,即:將IP地址段100.104.0.0/16加入到RDS的白名單列表中。RDS白名單的配置方法可參考這個文檔。
節(jié)點2:創(chuàng)建OSS備份表
我們需要在DLA中創(chuàng)建OSS備份表(oss_orders),首先將節(jié)點的目標(biāo)數(shù)據(jù)庫設(shè)為demo_schema,然后將節(jié)點內(nèi)容設(shè)置為如下的SQL語句。oss_orders表的結(jié)構(gòu)與RDS中的orders表完全一致,不同的是oss_orders為分區(qū)表,按照年/月/日(y/m/d)分區(qū):
CREATE EXTERNAL TABLE oss_orders (order_id bigint,product_name varchar(32),price double,total_amount double,created_date date) PARTITIONED BY (y string, m string, d string) STORED AS TEXTFILE LOCATION 'oss://xxxxxx/dla_demo/';其中,LOCATION參數(shù)需要填寫一個OSS路徑,即:歸檔數(shù)據(jù)儲存的OSS地址。
節(jié)點3:數(shù)據(jù)備份
該數(shù)據(jù)備份實現(xiàn)了將RDS MySQL數(shù)據(jù)備份至OSS的功能。配置節(jié)點需要選擇目標(biāo)數(shù)據(jù)庫為DLA的demo_schema,設(shè)置時間變量,并且編寫備份SQL語句。
配置三個時間變量,它們分別是:
? year:當(dāng)前日期前一天的年份(格式為yyyy)
? month:當(dāng)前日期前一天的月份(格式為MM)
? day:當(dāng)前日期前一天的日(格式為dd)
注:關(guān)于DMS任務(wù)編排中變量的配置和使用,請參閱該文檔。bizdate為DMS任務(wù)編排里的系統(tǒng)參數(shù),對應(yīng)到任務(wù)運(yùn)行時間的前一天,其他自定義變量也會隨著任務(wù)執(zhí)行時間的變化而自動更新。
設(shè)置數(shù)據(jù)備份SQL語句
上面的SQL腳本本質(zhì)上包括3個步驟來實現(xiàn)數(shù)據(jù)備份:
這里的巧妙之處在于,合理地利用了DMS任務(wù)編排里變量的功能,以及DLA OSS表的分區(qū)功能。臨時表對應(yīng)的OSS路徑正好是全局備份表的一個分區(qū)路徑。隨著任務(wù)每日執(zhí)行,變量的值會自動更新,由此產(chǎn)生新的OSS目錄和分區(qū),RDS MySQL的增量數(shù)據(jù)也自動地歸檔至新分區(qū)下。例如:RDS中created_date為2020-06-01的數(shù)據(jù),將歸檔至oss://xxxxxx/dla_demo/y=2020/m=06/d=01的路徑下。
2.4 配置任務(wù)流調(diào)度
最后,再介紹一下如何對任務(wù)流的調(diào)度進(jìn)行配置。點擊任務(wù)流空白處,調(diào)出右側(cè)的調(diào)度配置頁面。首先將該任務(wù)流的調(diào)度進(jìn)行開啟,然后將運(yùn)行時間設(shè)為RDS MySQL的業(yè)務(wù)低峰期(如:凌晨5點),并將調(diào)度周期設(shè)為“日”。這樣設(shè)置以后,該任務(wù)流將在每天的5點鐘定期執(zhí)行,無需人工干預(yù)。如果要查看任務(wù)流的執(zhí)行歷史,可點擊左側(cè)的運(yùn)維中心,其中還會展示每一次執(zhí)行的時間和日志。
3 快速任務(wù)流構(gòu)建 — 任務(wù)流模板
為了節(jié)省用戶手動創(chuàng)建和配置任務(wù)流的時間,DMS任務(wù)編排還提供了多種模板。這些模板通常包含了內(nèi)置好的任務(wù)節(jié)點和SQL內(nèi)容;它們從具體的場景出發(fā),經(jīng)過悉心的設(shè)計來解決實際問題,并且來源于DMS用戶的真實案例,例如:第二節(jié)介紹的RDS數(shù)據(jù)周期歸檔OSS場景就來自于某知名跨國汽車廠商。
通過模板,用戶可一鍵創(chuàng)建任務(wù)流,然后經(jīng)過簡單的配置,如:設(shè)置節(jié)點的目標(biāo)數(shù)據(jù)庫和SQL中的部分參數(shù),即可生成可運(yùn)行的任務(wù)流。目前,我們已經(jīng)上線了多個任務(wù)流模板,歡迎訪問DMS任務(wù)編排的首頁進(jìn)行查看,我們也將持續(xù)補(bǔ)充模板,讓任務(wù)編排的使用更加便捷。
4 總結(jié)
DMS是阿里云用戶非常喜愛的一款數(shù)據(jù)庫工具產(chǎn)品,能幫助用戶打通各種網(wǎng)絡(luò)環(huán)境,對數(shù)據(jù)庫進(jìn)行管理和操作。除了常規(guī)的數(shù)據(jù)庫增刪改查和DDL操作,越來越多的用戶需要對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行歸檔、遷移、備份和加工。為了滿足這些需求,DMS推出了任務(wù)編排功能,它打通了數(shù)據(jù)庫與其他系統(tǒng)/存儲之間的通道,讓數(shù)據(jù)庫不再成為數(shù)據(jù)孤島。此外,DMS任務(wù)編排還提供了豐富的任務(wù)類型,以及任務(wù)流和定時調(diào)度能力,可以幫助用戶輕松地對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行清洗加工,把數(shù)據(jù)轉(zhuǎn)變成商業(yè)智能。
DMS任務(wù)編排雖然在公共云上發(fā)布不久,但已經(jīng)積累了來自各個行業(yè)的眾多用戶,包括:互聯(lián)網(wǎng)、零售、支付、交通、汽車、美妝等等。如果您想了解更多DMS任務(wù)編排的詳細(xì)功能,歡迎登錄DMS的控制臺首頁進(jìn)行體驗,或者查看我們的產(chǎn)品文檔。也歡迎您掃碼加入DMS的釘釘用戶服務(wù)群進(jìn)行交流和咨詢。
原文鏈接
本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
總結(jié)
以上是生活随笔為你收集整理的玩转DB里的数据—阿里云DMS任务编排之简介和实操的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 多所高校内使用AI监控并追踪学生行为惹争
- 下一篇: 第九弹 - 脚本模式与参数视图