方案概述
在巨量資料時代,企業面臨著大量分散在不同的系統和平台上的業務資料,為了有效地管理和利用這些資料,企業往往需要依賴於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執行個體中,構建全域分析視角。
支援地區
支援無感整合(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執行個體的費用。
前提條件
已建立執行個體:
已將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:*:*:*"
}
]
}
在RAM控制台建立自訂權限原則。操作步驟,請參見建立自訂權限原則。
操作步驟
登入雲原生資料倉儲AnalyticDB PostgreSQL版控制台。
在控制台左上方,選擇執行個體所在地區。
找到目標執行個體,單擊執行個體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任務的運行情況。具體操作如下。
登入CloudMonitor控制台。
查看監控資訊。
在左側導覽列,單擊。
滑鼠懸浮在雲原生資料倉儲 AnalyticDB PostgreSQL 版,單擊AnalyticDB for PostgreSQL- ZeroETL延遲。
在執行個體列表頁,單擊執行個體ID,查看每個執行個體下Zero-ETL任務的監控資訊。
建立警示規則。
在左側導覽列,單擊。
單擊建立警示規則,在彈出的建立警示規則面板,配置Zero-ETL任務警示規則。具體操作,請參見建立警示規則。
建立訂閱策略。
在左側導覽列,單擊。
單擊建立訂閱策略,在建立訂閱策略頁面,配置Zero-ETL任務訂閱策略。具體操作,請參見建立訂閱策略。