雲資料庫ClickHouse提供無感Data Integration(Zero-ETL)功能,用於將RDS MySQL資料同步至雲資料庫ClickHouse,您無需搭建或維護資料同步鏈路,且資料同步鏈路不收費,減少資料轉送成本和營運成本。
方案概述
在巨量資料時代,企業面臨著大量分散在不同的系統和平台上的業務資料,為了有效地管理和利用這些資料,企業往往需要依賴於ETL工具對資料進行集中式管理。
ETL是將上層業務系統的資料經過提取(Extract)、轉換清洗(Transform)、載入(Load)到資料倉儲的處理過程,目的是將上遊分散的資料整合到目標端數倉,通過在數倉中做進一步的計算分析,來為業務做出有效商業決策。
傳統的ETL流程通常會面臨以下挑戰:
資源成本增加:不同的資料來源可能需要不同的ETL工具,搭建ETL鏈路會產生額外的資源成本。
系統複雜度增加:使用者需要自我維護ETL工具,增加了營運難度,無法專註於業務應用的開發。
資料即時性降低:部分ETL流程涉及周期性的批次更新,在近即時的應用情境中,無法快速產生分析結果。
為瞭解決這些問題,阿里雲Business Foundation System資料庫提供了無感Data Integration(Zero-ETL)功能,可以快速構建業務系統(OLTP)和資料倉儲(OLAP)之間的資料同步鏈路,將業務系統(OLTP)的資料自動提取、轉換清洗和載入到資料倉儲(OLAP),從而一站式完成資料同步和管理,實現交易處理和資料分析一體化,協助客戶專註於資料分析業務。
功能優勢
簡單易用:使用者無需建立和維護執行ETL(提取、轉換、載入操作)的複雜資料管道,僅需選擇源端資料和目標端執行個體,自動建立即時資料同步鏈路,減少構建和管理資料管道所帶來的挑戰,專註於上層應用開發。
零成本:Zero-ETL鏈路不額外收費,可免費實現在資料倉儲中對上遊資料進行分析。
多源匯聚:通過Zero-ETL鏈路將多個執行個體中的資料即時同步至一個ClickHouse執行個體中,構建全域分析視角。
說明多個執行個體中的資料即時同步至一個ClickHouse執行個體,僅支援不同任務之間的同步對象不重疊。
支援鏈路
RDS MySQL->ClickHouse
費用說明
無感Data Integration(Zero-ETL)同步鏈路免費。
前提條件
雲資料庫ClickHouse叢集與RDS for MySQL執行個體位於同一地區。
已為RDS MySQL和目標庫建立資料庫帳號。具體操作,請參見建立RDS MySQL帳號和建立ClickHouse帳號。
使用限制
類型 | 說明 |
RDS MySQL限制 |
|
其他限制 | 雲資料庫ClickHouse的時間類型資料存在範圍限制,若RDS MySQL中的時間不在該範圍內,會導致同步到雲資料庫ClickHouse的時間不正確。範圍限制,請參見時間資訊。 |
注意事項
無感整合鏈路建立注意事項
雲資料庫ClickHouse叢集Zero-ETL鏈路數超過限制時,將無法建立新Zero-ETL鏈路。您可以使用DTS建立新的同步鏈路,或刪除不再使用的Zero ETL鏈路以建立新的鏈路。Zero-ETL鏈路條數限制資訊如下:
企業版叢集可建條數:
[叢集CCU下限/8]計算時向上取整,例如叢集CCU下限為22CCU,上限為36CCU,則取叢集的彈性下限22來計算可建立的鏈路數,計算結果為22/8=2.75,向上取整後為3,即允許建立的Zero-ETL鏈路上限為3。社區版叢集可建條數:
[叢集總核心數/8]計算時向上取整,例如叢集每個節點規格為8核32GB,有2個節點,則取叢集CPU的總核心數8*2=16來計算可建立的鏈路數,計算結果為16/8=2,即允許建立的Zero-ETL鏈路上限為2。
同步任務注意事項
若源RDS MySQL的DDL語句不是標準的MySQL文法,則可能導致同步任務失敗或資料丟失。
待同步資料庫的數量符合雲資料庫ClickHouse的限制,即不超過256個。
待同步資料庫、表和列的名稱符合雲資料庫ClickHouse的命名規範,相關規範請參見對象命名規範限制。
如同步對象為單個或多個表(非整庫),那麼在資料同步時,勿對源庫的同步對象使用pt-online-schema-change等類似工具執行線上DDL變更,否則會導致同步失敗。
執行資料同步前需評估源庫和目標庫的效能,同時建議業務低峰期執行資料同步。否則全量資料初始化時將佔用源庫和目標庫一定的讀寫資源,可能會導致資料庫的負載上升。
在庫表結構同步階段,無感整合會在目標表中添加欄位_sign、_is_deleted和_version。
如果目標端是雲資料庫ClickHouse社區相容版叢集,無感整合會為目標端建立一個本地表和一個分布式表。
分布式表的名稱與源端表的名稱一致。
本地表的名稱為
<分布式表名稱>+_local。
資料類型映射關係
由於MySQL和ClickHouse叢集支援的資料類型不同,資料類型無法一一對應。所以DTS在進行結構初始化時,會根據目標庫支援的資料類型進行類型映射,詳情請參見結構初始化涉及的資料類型映射關係。
準備工作
建立服務關聯角色並授予RAM使用者對應的系統管理權限。
建立服務關聯角色AliyunServiceRoleForClickHouseZeroETL。
說明在建立鏈路進行配置,並點擊資料庫執行個體ID下拉式清單項時,會有彈窗報錯提示建立服務關聯角色AliyunServiceRoleForClickHouseZeroETL,無需手動建立,系統會自動建立該角色。
授予RAM使用者系統管理權限。
RAM使用者必須具備以下三種許可權,才可以成功建立Zero-ETL鏈路。如何給RAM使用者授權,請參見管理RAM使用者的許可權。
源端RDS MySQL的許可權:AliyunRDSFullAccess。
目標端ClickHouse的許可權:AliyunClickHouseFullAccess。
DTS的許可權:DTS的自訂策略指令碼如下,如何建立自訂許可權,請參見建立自訂權限原則。
{ "Version": "1", "Statement": [ { "Action": "dts:*", "Resource": "*", "Effect": "Allow" }, { "Action": "ram:PassRole", "Resource": "*", "Effect": "Allow", "Condition": { "StringEquals": { "acs:Service": "dts.aliyuncs.com" } } } ] }
同步資料
步驟一:進入無感Data Integration(Zero-ETL)頁面
登入雲資料庫ClickHouse控制台,在頁面左上方,選擇目的地組群所在的地區。
在集群清單頁面,選擇默認實例列表,單擊目的地組群ID。
在左側導覽列,單擊无感集成(Zero-ETL)。
步驟二:建立Zero-ETL任務並啟動任務
單擊建立Zero-ETL任務,進入建立Zero-ETL任務頁面。
填寫任務名稱,並完成以下配置。
配置源庫及目標庫。
根據下述參數配置源庫及目標庫,配置完成後,單擊測試連接以進行下一步。
源庫資訊
源庫資訊
說明
資料庫類型
僅支援RDS for MySQL。
接入方式
僅支援雲執行個體。
執行個體地區
選擇源執行個體所屬地區。
RDS執行個體ID
RDS MySQL執行個體ID。
資料庫帳號
RDS MySQL執行個體的資料庫帳號。
資料庫帳號
RDS MySQL資料庫帳號的密碼。
串連方式
根據需求選擇非加密串連或SSL安全連線。如果設定為SSL安全連線,您需要提前開啟RDS MySQL執行個體的SSL加密功能,詳情請參見使用雲端認證快速開啟SSL鏈路加密。
目標庫資訊
目標庫資訊
說明
資料庫類型
ClickHouse
接入方式
僅支援雲執行個體接入。
執行個體地區
目標庫的叢集所屬地區。
叢集ID
目標庫的叢集ID。
叢集類型
叢集的類型分為社區版和企業版。
資料庫帳號
目標庫叢集的資料庫帳號。
資料庫密碼
目標庫叢集的資料庫帳號的密碼。
配置Zero-ETL。
在源庫對象框的多選框中選擇待同步對象,然後單擊
將其移動至已選擇對象框,單擊下一步配置庫表欄位。
配置庫表欄位。
在配置Zero-ETL頁面,配置待同步表在目標庫中的類型、主鍵列、排序鍵、分布鍵和分區鍵資訊。
說明頁面預設展示未定義的表資訊,您可以將定義狀態選擇為全部後進行修改。
主鍵列和排序鍵可以是按鍵組合,即您可以在對應的下拉框中選擇多個欄位作為主鍵列或排序鍵,且需要從主鍵列中選擇一個或者多個列作分區鍵;分布鍵只能選擇一個欄位。更多關於主鍵列、排序鍵、分區鍵的資訊,請參見CREATE TABLE。
分區鍵可以不設定,但不可以選擇為可空的欄位,否則同步任務將會失敗。
儲存任務。
配置庫表欄位完成後,單擊下一步儲存任務並預檢查。
說明此操作完成後,無論預檢查是否通過,任務建立均已儲存。
預檢查並啟動任務。
預檢查通過率為100%時,單擊啟動,啟動Zero-ETL任務。
您可以在無感Data Integration(Zero-ETL)頁面,查看目標Zero-ETL任務的ID/名稱、源/目標、運行狀態等資訊。
如果預檢查失敗,根據失敗資訊調整源庫和目標庫後,可以在無感Data Integration(Zero-ETL)頁面找到目標任務,進行任務修改,重新進行預檢查。待預檢查成功後,即可啟動任務。
監控Zero-ETL任務
監控Zero-ETL任務有以下幾種方式,建議您選擇監控警示或訂閱事件及時擷取任務情況,在任務異常時,可結合主動查看方式,進行任務排查。
監控方式 | 優勢 | 劣勢 | 操作 |
主動查看 | 可全方面查看任務狀況,比如同步效能、同步詳情、任務日誌等。 | Zero-ETL任務異常時無法主動通知您處理異常。 | |
警示監控 | 根據警示規則,CloudMonitor系統會自動發送警示通知,以協助您及時擷取異常監控資料並迅速進行處理。 | 僅支援監控Zero-ETL任務的同步延遲(毫秒)情況。 | |
訂閱事件 | 當Zero-ETL的系統事件達到警示條件時,CloudMonitor將自動發送警示通知,以便您及時瞭解任務的異常與恢複情況,並迅速採取相應措施。 | 僅支援監控Zero-ETL任務的失敗和恢複。 |
通過ClickHouse控制台監控
登入雲資料庫ClickHouse控制台,在頁面左上方,選擇目的地組群所在的地區。
在集群清單頁面,選擇默認實例列表,單擊目的地組群ID。
在左側導覽列,單擊无感集成(Zero-ETL)。
單擊目標任務操作列的任務詳情。
在任務詳情頁面,您可以對任務進行全面資訊查看與監控。

CloudMonitorZeroETL延遲警示監控
通過CloudMonitor,您可以建立警示規則以監測ZeroETL延遲情況。當監測指標達到警示條件時,CloudMonitor系統將自動發送警示通知,協助您及時擷取異常監控資料並迅速進行處理。
步驟一:建立ZeroETL延遲警示
如何建立ZeroETL延遲警示,請參見通過CloudMonitor控制台。建立時,請務必注意以下參數的填寫。
參數 | 說明 |
產品 | 固定選擇雲資料庫Clickhouse - ZeroETL延遲。 |
監控指標 | 固定選擇同步延遲。 |
步驟二:查看叢集延遲情況
在雲資料庫Clickhouse - ZeroETL延遲列表,單擊目的地組群操作列的監控圖表,查看叢集同步延遲情況。
CloudMonitorZero-ETL任務事件訂閱
如果您需要監控Zero-ETL任務的恢複與失敗情況,且能及時得到通知,您可以對相關事件進行訂閱。
如何訂閱Zero-ETL事件,請參見管理事件訂閱。在建立訂閱策略時,請務必注意以下參數的填寫。
訂閱事件 | 參數 | 說明 |
Zero-ETL任務失敗 | 訂閱類型 | 固定選擇系統事件。 |
產品 | 固定選擇雲資料庫Clickhouse。 | |
事件類型 | 固定選擇異常。 | |
事件名稱 | 固定選擇ZeroETL任務異常。 | |
Zero-ETL任務恢複 | 訂閱類型 | 固定選擇系統事件。 |
產品 | 固定選擇雲資料庫Clickhouse。 | |
事件類型 | 固定選擇Restore。 | |
事件名稱 | 固定選擇ZeroETL任務恢複。 |
常見問題
Q:使用Zero-ETL同步資料到雲資料庫ClickHouse後,為什麼目標庫資料量比源庫資料量多?
原因分析:當源端執行update或delete操作時,ClickHouse都會寫入一條新資料,並使用_sign和is_deleted欄位以及version來標記這些操作。因此,目標庫資料量多於源庫資料量。
解決方案:查詢的時候使用 _sign或is_deleted 條件過濾刪除的資料(根據版本決定),並且在表名後加final 來去重。欄位標識資訊,請參見欄位資訊。
Q:使用Zero-ETL同步資料到雲資料庫ClickHouse後,為什麼目標庫會出現_local的表?
如果目標端是雲資料庫ClickHouse社區相容版叢集,無感整合會為目標端建立一個本地表和一個分布式表。
分布式表的名稱與源端表的名稱一致。
本地表的名稱為
<分布式表名稱>+_local。