無(wú)感數(shù)據(jù)集成(Zero-ETL)
云數(shù)據(jù)庫(kù)RDS提供無(wú)感數(shù)據(jù)集成(Zero-ETL)功能,用于將RDS數(shù)據(jù)同步至數(shù)據(jù)倉(cāng)庫(kù)(AnalyticDB MySQL、AnalyticDB PostgreSQL或ClickHouse),您無(wú)需搭建或維護(hù)數(shù)據(jù)同步鏈路,且數(shù)據(jù)同步鏈路不收費(fèi),減少數(shù)據(jù)傳輸成本和運(yùn)維成本。
支持地域
華北2(北京)、華東1(杭州)、華東2(上海)和華南1(深圳)
后續(xù)將支持更多地域,具體以RDS控制臺(tái)為準(zhǔn)。
方案概述
在大數(shù)據(jù)時(shí)代,企業(yè)面臨著大量分散在不同的系統(tǒng)和平臺(tái)上的業(yè)務(wù)數(shù)據(jù),為了有效地管理和利用這些數(shù)據(jù),企業(yè)往往需要依賴于ETL工具對(duì)數(shù)據(jù)進(jìn)行集中式管理。
ETL是將上層業(yè)務(wù)系統(tǒng)的數(shù)據(jù)經(jīng)過(guò)提取(Extract)、轉(zhuǎn)換清洗(Transform)、加載(Load)到數(shù)據(jù)倉(cāng)庫(kù)的處理過(guò)程。其目的是整合散布于不同源頭的數(shù)據(jù)到目標(biāo)端數(shù)倉(cāng),通過(guò)在數(shù)倉(cāng)中做進(jìn)一步的計(jì)算分析,為業(yè)務(wù)做出有效的商業(yè)決策。
傳統(tǒng)的ETL流程通常會(huì)面臨以下挑戰(zhàn):
系統(tǒng)復(fù)雜度增加:用戶需要自行維護(hù)ETL工具,增加了運(yùn)維難度,無(wú)法專注于業(yè)務(wù)應(yīng)用的開(kāi)發(fā)。
資源成本增加:不同的數(shù)據(jù)源可能需要不同的ETL工具,搭建ETL鏈路會(huì)產(chǎn)生額外的資源成本。
數(shù)據(jù)實(shí)時(shí)性降低:部分ETL流程涉及周期性的批量更新,在近實(shí)時(shí)的應(yīng)用場(chǎng)景中,無(wú)法快速產(chǎn)生分析結(jié)果。
為了解決這些問(wèn)題,阿里云瑤池?cái)?shù)據(jù)庫(kù)提供了無(wú)感數(shù)據(jù)集成(Zero-ETL)功能,可以快速構(gòu)建業(yè)務(wù)系統(tǒng)(OLTP)和數(shù)據(jù)倉(cāng)庫(kù)(OLAP)之間的數(shù)據(jù)同步鏈路,將業(yè)務(wù)系統(tǒng)(OLTP)的數(shù)據(jù)自動(dòng)提取、轉(zhuǎn)換清洗和加載到數(shù)據(jù)倉(cāng)庫(kù)(OLAP),從而一站式完成數(shù)據(jù)同步和管理,實(shí)現(xiàn)事務(wù)處理和數(shù)據(jù)分析一體化,幫助客戶專注于數(shù)據(jù)分析業(yè)務(wù)。
功能優(yōu)勢(shì)
簡(jiǎn)單易用:用戶無(wú)需創(chuàng)建和維護(hù)執(zhí)行ETL(提取、轉(zhuǎn)換、加載操作)的復(fù)雜數(shù)據(jù)管道,僅需選擇源端數(shù)據(jù)和目標(biāo)端實(shí)例,自動(dòng)創(chuàng)建實(shí)時(shí)數(shù)據(jù)同步鏈路,減少構(gòu)建和管理數(shù)據(jù)管道所帶來(lái)的挑戰(zhàn),專注于上層應(yīng)用開(kāi)發(fā)。
零成本:Zero-ETL鏈路不額外收費(fèi),可免費(fèi)實(shí)現(xiàn)在數(shù)據(jù)倉(cāng)庫(kù)中對(duì)上游數(shù)據(jù)進(jìn)行分析。
多源匯聚:通過(guò)Zero-ETL鏈路將多個(gè)實(shí)例中的數(shù)據(jù)實(shí)時(shí)同步至一個(gè)AnalyticDB MySQL集群、AnalyticDB PostgreSQL實(shí)例或ClickHouse實(shí)例中,構(gòu)建全局分析視角。
說(shuō)明多個(gè)實(shí)例中的數(shù)據(jù)實(shí)時(shí)同步至一個(gè)ClickHouse實(shí)例,僅支持不同任務(wù)之間的同步對(duì)象不重疊。
支持鏈路
RDS MySQL->ClickHouse
RDS MySQL->AnalyticDB MySQL 3.0
RDS MySQL->AnalyticDB PostgreSQL
費(fèi)用說(shuō)明
無(wú)感數(shù)據(jù)集成(Zero-ETL)同步鏈路免費(fèi)。
前提條件
已創(chuàng)建源實(shí)例RDS MySQL。如需創(chuàng)建,請(qǐng)參見(jiàn)快速創(chuàng)建RDS MySQL實(shí)例。
已創(chuàng)建目標(biāo)實(shí)例ClickHouse、AnalyticDB MySQL數(shù)倉(cāng)版集群或AnalyticDB PostgreSQL實(shí)例。如需創(chuàng)建,請(qǐng)參見(jiàn)創(chuàng)建ClickHouse實(shí)例、創(chuàng)建AnalyticDB MySQL數(shù)倉(cāng)版集群、創(chuàng)建AnalyticDB PostgreSQL實(shí)例。
源實(shí)例和目標(biāo)實(shí)例需在同一地域。
已為RDS MySQL和目標(biāo)庫(kù)創(chuàng)建數(shù)據(jù)庫(kù)賬號(hào)。具體操作創(chuàng)建RDS MySQL賬號(hào)、創(chuàng)建ClickHouse賬號(hào)、創(chuàng)建AnalyticDB MySQL集群賬號(hào)、創(chuàng)建AnalyticDB PostgreSQL數(shù)據(jù)庫(kù)賬號(hào)。
準(zhǔn)備工作
創(chuàng)建服務(wù)關(guān)聯(lián)角色并授予RAM用戶對(duì)應(yīng)的管理權(quán)限。
RDS MySQL->ClickHouse
創(chuàng)建服務(wù)關(guān)聯(lián)角色AliyunServiceRoleForClickHouseZeroETL。
說(shuō)明在創(chuàng)建鏈路進(jìn)行配置,并單擊數(shù)據(jù)庫(kù)實(shí)例ID下拉列表項(xiàng)時(shí),會(huì)有彈窗報(bào)錯(cuò)提示創(chuàng)建服務(wù)關(guān)聯(lián)角色AliyunServiceRoleForClickHouseZeroETL(如下圖),無(wú)需手動(dòng)創(chuàng)建,系統(tǒng)會(huì)自動(dòng)創(chuàng)建該角色。
授予RAM用戶管理權(quán)限。
RAM用戶必須具備以下三種權(quán)限,才可以成功創(chuàng)建Zero鏈路。具體操作,請(qǐng)參見(jiàn)創(chuàng)建自定義權(quán)限策略。
源端RDS MySQL權(quán)限:AliyunRDSFullAccess。
目標(biāo)端ClickHouse權(quán)限:ClickHouse的自定義策略腳本如下。
{ "Version": "1", "Statement": [ { "Action": "clickhouse:*", "Resource": "*", "Effect": "Allow" }, { "Action": "ram:CreateServiceLinkedRole", "Resource": "*", "Effect": "Allow", "Condition": { "StringEquals": { "ram:ServiceName": "clickhouse.aliyuncs.com" } } } ] }
DTS的權(quán)限:DTS的自定義策略腳本如下。
{ "Version": "1", "Statement": [ { "Action": "dts:*", "Resource": "*", "Effect": "Allow" }, { "Action": "ram:PassRole", "Resource": "*", "Effect": "Allow", "Condition": { "StringEquals": { "acs:Service": "dts.aliyuncs.com" } } } ] }
RDS MySQL->AnalyticDB MySQL 3.0
創(chuàng)建服務(wù)關(guān)聯(lián)角色AliyunServiceRoleForAnalyticDBForMySQL。
前往RAM控制臺(tái)并選擇左側(cè)導(dǎo)航欄的角色列表。檢查角色列表中,是否已存在名為AliyunServiceRoleForAnalyticDBForMySQL的服務(wù)關(guān)聯(lián)角色。若不存在,則需創(chuàng)建相關(guān)角色。
單擊左上角創(chuàng)建角色。
在彈出的創(chuàng)建角色對(duì)話框中,選擇阿里云服務(wù),并單擊下一步。
選擇角色類型為服務(wù)關(guān)聯(lián)角色,并選擇AnalyticDB MySQL。
單擊完成,返回角色列表,確保已成功創(chuàng)建服務(wù)關(guān)聯(lián)角色。
授予RAM用戶管理權(quán)限。
RAM用戶支持為所有或指定RDS MySQL實(shí)例和AnalyticDB MySQL集群授權(quán)。具體操作,請(qǐng)參見(jiàn)創(chuàng)建自定義權(quán)限策略。
自定義權(quán)限策略的腳本如下:
為所有RDS MySQL和AnalyticDB MySQL集群授權(quán)
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "dts:*", "Resource": [ "acs:adb:*:*:*", "acs:rds:*:*:*" ] }, { "Effect": "Allow", "Action": [ "dts:DescribeRegions", "dts:DescribeConfigRelations", "dts:DescribeSrcLinkConfig", "dts:DescribeDestLinkConfig", "dts:DescribeLinkConfig", "dts:DescribeConciseJobStatics", "dts:ListUserAuthorizationLogs", "dts:CreateUserAuthorization" ], "Resource": [ "acs:dts:*:*:*" ] } ] }
為指定RDS MySQL和AnalyticDB MySQL集群授權(quán)
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "dts:*", "Resource": [ "acs:adb:*:*:dbcluster/am-2zeod8ax4b9a****", 替換為需要同步的AnalyticDB MySQL集群ID "acs:rds:*:*:dbinstance/rm-2ze6fs8ouh43****" 替換為需要同步的RDS MySQL實(shí)例ID ] }, { "Effect": "Allow", "Action": [ "dts:DescribeRegions", "dts:DescribeConfigRelations", "dts:DescribeSrcLinkConfig", "dts:DescribeDestLinkConfig", "dts:DescribeLinkConfig", "dts:DescribeConciseJobStatics", "dts:ListUserAuthorizationLogs", "dts:CreateUserAuthorization" ], "Resource": "acs:dts:*:*:*" } ] }
RDS MySQL->AnalyticDB PostgreSQL
創(chuàng)建服務(wù)關(guān)聯(lián)角色AliyunServiceRoleForADBPG。
前往RAM控制臺(tái)并選擇左側(cè)導(dǎo)航欄的角色列表。檢查角色列表中,是否已存在名為AliyunServiceRoleForADBPG的服務(wù)關(guān)聯(lián)角色。若不存在,則需創(chuàng)建相關(guān)角色。
單擊左上角創(chuàng)建角色。
在彈出的創(chuàng)建角色對(duì)話框中,選擇阿里云服務(wù),并單擊下一步。
選擇角色類型為服務(wù)關(guān)聯(lián)角色,并選擇AnalyticDB PostgreSQL。
單擊完成,返回角色列表,確保已成功創(chuàng)建服務(wù)關(guān)聯(lián)角色。
授予RAM用戶管理權(quán)限。
RAM用戶支持為所有或指定RDS MySQL實(shí)例和AnalyticDB PostgreSQL實(shí)例授權(quán)。具體操作,請(qǐng)參見(jiàn)創(chuàng)建自定義權(quán)限策略。
自定義權(quán)限策略的腳本如下:
為所有RDS MySQL和AnalyticDB PostgreSQL實(shí)例授權(quán)
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "dts:*", "Resource": [ "acs:gpdb:*:*:*", "acs:rds:*:*:*" ] }, { "Effect": "Allow", "Action": [ "dts:DescribeRegions", "dts:DescribeConfigRelations", "dts:DescribeSrcLinkConfig", "dts:DescribeDestLinkConfig", "dts:DescribeLinkConfig" ], "Resource": [ "acs:gpdb:*:*:*" ] } ] }
為指定RDS MySQL和AnalyticDB PostgreSQL實(shí)例授權(quán)
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "dts:*", "Resource": [ "acs:gpdb:*:*:dbinstanc/gp-bp1a740l3zx4****", 替換為需要同步的AnalyticDB PostgreSQL實(shí)例ID "acs:rds:*:*:dbinstance/rm-2ze6fs8ouh43****" 替換為需要同步的RDS MySQL實(shí)例ID ] }, { "Effect": "Allow", "Action": [ "dts:DescribeRegions", "dts:DescribeConfigRelations", "dts:DescribeSrcLinkConfig", "dts:DescribeDestLinkConfig", "dts:DescribeLinkConfig" ], "Resource": "acs:dts:*:*:*" } ] }
操作步驟
登錄RDS管理控制臺(tái),單擊左側(cè)導(dǎo)航欄數(shù)據(jù)集成。
在無(wú)感數(shù)據(jù)集成 (Zero-ETL)頁(yè)簽,單擊創(chuàng)建Zero-ETL任務(wù)。
在創(chuàng)建Zero-ETL任務(wù)頁(yè)面配置源庫(kù)信息和目標(biāo)庫(kù)信息。
配置源庫(kù)信息:
源庫(kù)信息
說(shuō)明
任務(wù)名稱
Zero-ETL任務(wù)名稱。
數(shù)據(jù)庫(kù)類型
選擇RDS MySQL
接入方式
僅支持云實(shí)例接入。
實(shí)例地區(qū)
選擇源實(shí)例所屬地域。
實(shí)例ID
RDS MySQL實(shí)例ID。
數(shù)據(jù)庫(kù)名稱
RDS MySQL實(shí)例數(shù)據(jù)庫(kù)名稱。
數(shù)據(jù)庫(kù)賬號(hào)
RDS MySQL實(shí)例的數(shù)據(jù)庫(kù)賬號(hào)。
數(shù)據(jù)庫(kù)密碼
RDS MySQL數(shù)據(jù)庫(kù)賬號(hào)的密碼。
連接方式
連接RDS MySQL實(shí)例的方式。包括非加密鏈接和SSL安全鏈接。
說(shuō)明如果設(shè)置為SSL安全連接,您需要提前開(kāi)啟RDS MySQL實(shí)例的SSL加密功能,詳情請(qǐng)參見(jiàn)使用云端證書(shū)快速開(kāi)啟SSL鏈路加密。
配置目標(biāo)庫(kù)信息:
目標(biāo)庫(kù)信息
說(shuō)明
數(shù)據(jù)庫(kù)類型
當(dāng)前目標(biāo)庫(kù)支持AnalyticDB MySQL 3.0、AnalyticDB PostgreSQL和ClickHouse。
接入方式
僅支持云實(shí)例接入。
實(shí)例地區(qū)
目標(biāo)庫(kù)所屬的地域。
實(shí)例ID
目標(biāo)庫(kù)的實(shí)例ID。
數(shù)據(jù)庫(kù)賬號(hào)
目標(biāo)庫(kù)實(shí)例的數(shù)據(jù)庫(kù)賬號(hào)。
數(shù)據(jù)庫(kù)密碼
目標(biāo)庫(kù)實(shí)例的數(shù)據(jù)庫(kù)賬號(hào)的密碼。
上述參數(shù)配置完成后,單擊測(cè)試連接以進(jìn)行下一步,進(jìn)入配置Zero-ETL頁(yè)面,配置如下參數(shù):
配置項(xiàng)目
說(shuō)明
同步類型
實(shí)現(xiàn)數(shù)據(jù)源之間的數(shù)據(jù)實(shí)時(shí)同步。
同步類型分為:庫(kù)表結(jié)構(gòu)同步、全量同步、增量同步。
說(shuō)明同步任務(wù)固定勾選增量數(shù)據(jù)同步,將源庫(kù)產(chǎn)生的增量數(shù)據(jù)實(shí)時(shí)同步至目標(biāo)庫(kù)。
不需要增量同步時(shí),請(qǐng)使用數(shù)據(jù)遷移。
實(shí)例級(jí)別選擇所需同步的DDL和DML
勾選所需同步的DML操作(insert、update和delete)和DDL操作(create、alter、drop、rename和truncate),默認(rèn)全部勾選。
源庫(kù)對(duì)象和已選擇對(duì)象
數(shù)據(jù)庫(kù)中源庫(kù)對(duì)象和同步對(duì)象。
高級(jí)配置(選填)
設(shè)置源庫(kù)、目標(biāo)庫(kù)無(wú)法連接后的重試時(shí)間和源庫(kù)、目標(biāo)庫(kù)出現(xiàn)其他問(wèn)題后的重試時(shí)間。
上述參數(shù)配置完成后,單擊配置庫(kù)表字段,配置信息如下:
庫(kù)表字段配置
說(shuō)明
數(shù)據(jù)庫(kù)名稱
選擇已有的數(shù)據(jù)庫(kù)。
表名稱
選擇已有的數(shù)據(jù)表。
主鍵列
已選數(shù)據(jù)表中的主鍵所在字段。
分布鍵
已選數(shù)據(jù)表中的分布鍵所在字段。
類型
數(shù)據(jù)表類型,包括分區(qū)表和復(fù)制表。
定義狀態(tài)
定義完庫(kù)表字段配置狀態(tài)后,即從未定義變?yōu)橐讯x。
配置完上述所有參數(shù)后,單擊下一步保存任務(wù)并預(yù)檢查。
預(yù)檢查通過(guò),單擊啟動(dòng),啟動(dòng)Zero-ETL任務(wù)。
您可以在免費(fèi)數(shù)據(jù)同步頁(yè)面,查看目標(biāo)Zero-ETL任務(wù)的名稱、源/目標(biāo)、運(yùn)行狀態(tài)等信息。