AnalyticDB for PostgreSQL提供無感整合(Zero-ETL)功能,可以協助您一站式完成資料同步和管理,實現交易處理和資料分析一體化,專註於資料分析業務。
方案概述
在巨量資料時代,企業面臨著大量分散在不同的系統和平台上的業務資料,為了有效地管理和利用這些資料,企業往往需要依賴於ETL工具對資料進行集中式管理。
ETL是將上層業務系統的資料經過提取(Extract)、轉換清洗(Transform)、載入(Load)到資料倉儲的處理過程,目的是將上遊分散的資料整合到目標端數倉,通過在數倉中做進一步的計算分析,來為業務做有效商業決策。
傳統的ETL流程通常會面臨以下挑戰:
資源成本增加:不同的資料來源可能需要不同的ETL工具,搭建ETL鏈路會產生額外的資源成本。
系統複雜度增加:使用者需要自我維護ETL工具,增加了營運難度,無法專註於業務應用的開發。
資料即時性降低:部分ETL流程涉及周期性的批次更新,在近即時的應用情境中,無法快速產出分析結果。
為瞭解決這些問題,阿里雲Business Foundation System資料庫提供了無感整合(Zero-ETL)功能,可以快速構建業務系統(OLTP)和資料倉儲(OLAP)之間的資料同步鏈路,將業務系統(OLTP)的資料自動進行提取、轉換清洗和載入到資料倉儲(OLAP),從而一站式完成資料同步和管理,實現交易處理和資料分析一體化,協助客戶專註於資料分析業務。
AnalyticDB for PostgreSQL僅支援以下Zero-ETL鏈路:
PolarDB for PostgreSQL至AnalyticDB for PostgreSQL的資料同步鏈路。
PolarDB for MySQL至AnalyticDB for PostgreSQL的資料同步鏈路。
ApsaraDB RDS for PostgreSQL至AnalyticDB for PostgreSQL的資料同步鏈路。
ApsaraDB RDS for MySQL至AnalyticDB for PostgreSQL的資料同步鏈路。
方案優勢
簡單易用:使用者無需建立和維護執行ETL(提取、轉換、載入操作)的複雜資料管道,僅需選擇源端資料和目標端執行個體,自動建立即時資料同步鏈路,減少構建和管理資料管道所帶來的挑戰,專註於上層應用開發。
零成本:Zero-ETL鏈路不額外收費,可免費實現在AnalyticDB for PostgreSQL中對上遊資料進行分析。
多源匯聚:通過Zero-ETL鏈路將多個執行個體中的資料即時同步至一個AnalyticDB for PostgreSQL執行個體中,構建全域分析視角。
注意事項
資料同步鏈路注意事項:
PolarDB for PostgreSQL鏈路的注意事項,請參見PolarDB PostgreSQL版同步至雲原生資料倉儲 AnalyticDB PostgreSQL版。
PolarDB for MySQL鏈路的注意事項,請參見PolarDB MySQL版同步至雲原生資料倉儲 AnalyticDB PostgreSQL版。
ApsaraDB RDS for PostgreSQL鏈路的注意事項,請參見RDS PostgreSQL同步至雲原生資料倉儲 AnalyticDB PostgreSQL版。
ApsaraDB RDS for MySQL鏈路的注意事項,請參見RDS MySQL同步至雲原生資料倉儲 AnalyticDB PostgreSQL 版。
支援地區
支援無感整合(Zero-ETL)功能的地區:華南1(深圳)、 華東1(杭州)、華東2(上海)、華北2(北京)、 華北3(張家口)、華北6(烏蘭察布)、 華北1(青島)、 華南3(廣州)、華東2金融雲、西南1(成都)、中國香港、馬來西亞(吉隆坡)、 美國(維吉尼亞)、美國(矽谷)、德國(法蘭克福)、印尼(雅加達)、日本(東京)和新加坡。
費用說明
不收取額外費用,僅收取ApsaraDB RDS for PostgreSQL、PolarDB for MySQL、PolarDB for PostgreSQL、ApsaraDB RDS for MySQL執行個體與AnalyticDB for PostgreSQL執行個體的費用。
前提條件
已建立執行個體:
已建立AnalyticDB for PostgreSQL執行個體。具體操作,請參見建立執行個體。
已建立ApsaraDB RDS for PostgreSQL、ApsaraDB RDS for MySQL、PolarDB for PostgreSQL或PolarDB for MySQL執行個體。具體操作,請參見建立RDS PostgreSQL執行個體,(廢棄,重新導向到“第一步”)快速建立RDS MySQL執行個體,建立PolarDB PostgreSQL版執行個體和建立PolarDB MySQL版叢集。
已將ApsaraDB RDS for PostgreSQL、ApsaraDB RDS for MySQL、PolarDB for MySQL或PolarDB for PostgreSQL執行個體的wal_level參數值設定為logical。具體操作,請參見RDS PostgreSQL同步至AnalyticDB for PostgreSQL。
AnalyticDB for PostgreSQL的可用儲存空間需要大於ApsaraDB RDS for PostgreSQL、ApsaraDB RDS for MySQL、PolarDB for MySQL或PolarDB for PostgreSQL執行個體已使用的儲存空間。
準備工作
建立AnalyticDB for PostgreSQL服務關聯角色
前往RAM控制台的角色列表。
檢查角色列表中,是否已存在名為
AliyunServiceRoleForADBPG的服務關聯角色。若不存在,則需建立相關角色。單擊左側建立角色。
在彈出的建立角色對話方塊中,選擇阿里雲服務,並單擊下一步。

選擇角色類型為服務關聯角色,並選擇雲端服務AnalyticDB for PostgreSQL。

單擊完成,返回角色列表,確保已成功建立服務關聯角色。
授予RAM使用者系統管理權限
RAM使用者建立和管理Zero-ETL鏈路需要下列兩種許可權
授予RAM使用者AnalyticDB for PostgreSQL系統管理權限
RAM使用者必須擁有AnalyticDB for PostgreSQL的系統管理權限:AliyunGPDBFullAccess,才可以建立和管理AnalyticDB for PostgreSQL的Zero-ETL鏈路。操作步驟,請參見為RAM使用者授權。
授予RAM使用者Zero-ETL系統管理權限
RAM使用者需要具備為資料來源執行個體與目標執行個體(AnalyticDB for PostgreSQL)建立鏈路的許可權,才能建立和管理Zero-ETL鏈路。您可以自訂權限原則,允許為資料來源和AnalyticDB for PostgreSQL的所有執行個體建立鏈路或僅為指定執行個體建立鏈路,並將自訂權限原則授權給RAM使用者。
授予所有的ApsaraDB RDS for PostgreSQL、ApsaraDB RDS for MySQL、PolarDB for MySQL、PolarDB for PostgreSQL、AnalyticDB for PostgreSQL執行個體許可權,具體指令碼如下:
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "dts:*", "Resource": [ "acs:gpdb:*:*:*", "acs:rds:*:*:*", "acs:polardb:*:*:*" ] }, { "Effect": "Allow", "Action": [ "dts:DescribeRegions", "dts:DescribeConfigRelations", "dts:DescribeSrcLinkConfig", "dts:DescribeDestLinkConfig", "dts:DescribeLinkConfig" ], "Resource": [ "acs:gpdb:*:*:*" ] } ] }授予指定的ApsaraDB RDS for PostgreSQL、ApsaraDB RDS for MySQL、PolarDB for MySQL、PolarDB for PostgreSQL、AnalyticDB for PostgreSQL執行個體許可權,具體指令碼如下:
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "dts:*", "Resource": [ "acs:gpdb:*:*:dbinstanc****", "acs:rds:*:*:dbinstance****", "acs:polardb:*:*:dbclus****" ] }, { "Effect": "Allow", "Action": [ "dts:DescribeRegions", "dts:DescribeConfigRelations", "dts:DescribeSrcLinkConfig", "dts:DescribeDestLinkConfig", "dts:DescribeLinkConfig" ], "Resource": "acs:dts:*:*:*" } ] }
操作步驟
在控制台左上方,選擇執行個體所在地區。
找到目標執行個體,單擊執行個體ID。
在左側導覽列,選擇無感整合(Zero-ETL),然後單擊左上方建立Zero-ETL任務。

在建立Zero-ETL任務頁面,建立一個Zero-ETL任務,配置源庫資訊和目標庫資訊:
配置源庫資訊:
源庫資訊
說明
樣本值
任務名稱
Zero-ETL任務名稱。
Zeroetltest
資料庫類型
當前源庫支援ApsaraDB RDS for PostgreSQL、ApsaraDB RDS for MySQL、PolarDB for MySQL和PolarDB for PostgreSQL四種類型。
ApsaraDB RDS for PostgreSQL
接入方式
僅支援雲執行個體接入。
雲執行個體
執行個體地區
選擇源執行個體所在的地區。
華東2(上海)
執行個體ID
源執行個體的ID。
pgm-2ze****
資料庫名稱
源執行個體中資料庫的名稱。
testdb
資料庫帳號
源執行個體中資料庫的帳號。
test
資料庫密碼
源執行個體中資料庫帳號的密碼。
password****
串連方式
SSL安全連線或非加密串連。
說明SSL連結增加了一層認證加密,在傳輸資料的過程中,會對資料加密,即使有人在網路層擷取了資料也無法得知具體內容。
SSL安全連線
配置目標庫資訊:
目標庫資訊
說明
樣本值
資料庫類型
當前目標庫僅支援AnalyticDB for PostgreSQL。
AnalyticDB for PostgreSQL
接入方式
僅支援雲執行個體接入。
雲執行個體
執行個體地區
AnalyticDB for PostgreSQL規劃的執行個體地區。
華東2(上海)
執行個體ID
AnalyticDB for PostgreSQL執行個體的ID。
gp-2zeod****
資料庫名稱
AnalyticDB for PostgreSQL資料庫的名稱。
testdb
資料庫帳號
AnalyticDB for PostgreSQL資料庫的帳號。
test
資料庫密碼
AnalyticDB for PostgreSQL資料庫帳號的密碼。
password****
測試連接以進行下一步,進入配置Zero-ETL頁面,配置資訊如下:
設定項目
說明
樣本值
執行個體層級選擇所需同步的DDL和DML
勾選所需同步的DML操作(insert、update和delete)
和DDL操作(create、alter、drop、rename和truncate)。
DML操作(insert、update和delete)。
DDL操作(create、alter、drop、rename和truncate)。
源庫對象和已選擇對象
資料庫中源庫對象和同步對象。
public
進階配置(選填)
設定源庫、目標庫無法串連後的重試時間以及源庫、目標庫出現其他問題後的重試時間。
源庫、目標庫無法串連後的重試時間:10分鐘。
源庫、目標庫出現其他問題後的重試時間:10分鐘。
配置庫表欄位,配置資訊如下:
庫表欄位配置
說明
樣本值
資料庫名稱
選擇已有的資料庫。
public
表名稱
選擇已有的資料表。
table1
主鍵欄位
已選資料表中的主鍵所在欄位。
id
分布鍵
資料表中的一個或多個欄位,用來確定資料在分布式環境下的儲存位置。
id
類型
資料分區類型。
雜湊分布表
定義狀態
定義完庫表欄位配置狀態後,即從未定義變為已定義。
已定義
配置完所有資源後,請單擊下一步儲存任務並預檢查。

預檢查通過後,系統自動啟動Zero-ETL任務,在工作清單可查看任務進度。

Zero-ETL任務監控與警示
建立並啟動Zero-ETL任務後,您可以在CloudMonitor控制台設定Zero-ETL任務警示規則,即時監控Zero-ETL任務的運行情況。具體操作如下。