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