為提升雲資料庫ClickHouse叢集高可用性,您可以將叢集的單可用性區域升級為多可用性區域,或者將雲資料庫 ClickHouse 社區相容版叢集單副本升級為雙副本。本文為您介紹升級的操作步驟。
前提條件
叢集狀態為運行中。
叢集沒有未完成支付的續約訂單。
說明您可以登入雲資料庫ClickHouse控制台,在頁面右上方,選擇費用 > 費用與成本,在左側導覽列,單擊訂單管理,完成訂單支付或作廢該訂單。
使用限制
雲資料庫 ClickHouse 企業版叢集:
不支援美國(矽谷)和美國(維吉尼亞)地區。
不支援切換主可用性區域。
多可用性區域叢集遷移可用性區域時,不支援僅變更專用網路交換器。
注意事項
雲資料庫 ClickHouse 社區相容版叢集:
MergeTree類型引擎表在叢集升級為多可用性區域部署後,會將原有歷史資料移轉寫入新的叢集中並自動完成重分布。
支援遷移的內容:
庫、資料字典、物化視圖。
表結構:除了Kafka和RabbitMQ引擎表以外的所有表結構。
資料:增量遷移MergeTree族表的資料。
不支援遷移的內容:
Kafka和RabbitMQ引擎表的表以及資料。
重要配置變更時會遷移資料到建立執行個體,並最終切流到建立執行個體。為保證Kafka和RabbitMQ資料不分流,請先清理源叢集的Kafka和RabbitMQ引擎表,待變更完成後再重新建立。
非MergeTree類型表(例如外表、Log表等)的資料。
重要以上不支援的內容,在升級過程中,您需根據操作步驟,手動處理。
升級為多可用性區域部署過程中,禁止DDL操作。如不遵循,升級最後,可能會出現資料校正不通過的現象,進而導致升級失敗。
升級為多可用性區域部署過程中,叢集CPU和記憶體使用量率會升高,預計單節點佔用資源小於5核20GB。
升級為多可用性區域部署後,內部節點IP會發生變化,如果依賴節點IP資料寫入和訪問,需重新擷取叢集的VPC網段IP。
變更集群配置後,會持續一段時間高頻merge操作,這會導致IO使用率上升,從而引起業務請求的延遲增加。建議您提前規劃以應對業務請求延遲的潛在影響。具體merge操作時間的計算方法,請參見計算遷移結束後的merge時間。
雲資料庫 ClickHouse 企業版叢集:可能會出現秒級閃斷或者秒級唯讀情況。
費用
變更集群配置後,費用將會發生變化,具體費用請以控制台為準。更多資訊,請參見變更配置計費說明。
操作步驟
社區相容版
步驟一:處理Kafka和RabbitMQ引擎表
Kafka/RabbitMQ引擎表不支援遷移,您需自主處理此類表。
登入叢集,通過以下語句,查詢需要處理的表。如何登入叢集,請參見通過DMS串連ClickHouse。
SELECT * FROM `system`.`tables` WHERE engine IN ('RabbitMQ', 'Kafka');查看目標表的建表語句並備份。
SHOW CREATE TABLE <aim_table_name>;刪除Kafka和RabbitMQ引擎的表。
重要刪除Kafka時,需同時刪除引用Kafka表的物化視圖,否則導致擴縮容失敗。
步驟二:備份非MergeTree類型表的業務資料
登入叢集,通過以下語句,查看需要遷移資料的非MergeTree類型的表。
SELECT `database` AS database_name, `name` AS table_name, `engine` FROM `system`.`tables` WHERE (`engine` NOT LIKE '%MergeTree%') AND (`engine` != 'Distributed') AND (`engine` != 'MaterializedView') AND (`engine` NOT IN ('Kafka', 'RabbitMQ')) AND (`database` NOT IN ('system', 'INFORMATION_SCHEMA', 'information_schema')) AND (`database` NOT IN ( SELECT `name` FROM `system`.`databases` WHERE `engine` IN ('MySQL', 'MaterializedMySQL', 'MaterializeMySQL', 'Lazy', 'PostgreSQL', 'MaterializedPostgreSQL', 'SQLite') ))備份資料。
您需將以上非MergeTree類型的業務資料進行備份。具體操作,請參見備份資料至OSS。
步驟三:控制台升級操作
登入雲資料庫ClickHouse控制台,在頁面左上方,選擇叢集所在地區,然後在集群清單頁面,單擊默認實例列表頁簽。
在目的地組群所在行的操作列,單擊變更配置。
在變更配置彈窗中,選擇升级为多可用区部署,單擊確定。
在彈出的升級為多可用性區域部署檢測視窗,查看檢測狀態。
檢測成功:單擊下一步。
檢測失敗:根據頁面提示進行相應修改,修改完成後單擊重試檢測。檢測成功後,單擊下一步。
在升級為多可用性區域部署的過程中,檢測失敗的原因主要有以下幾種。
缺失唯一的分布式表:表示本地表沒有建立分布式表,需要再建立一個對應的分布式表。
對應的分布式表不唯一:表示本地表有不止一個分布式表,請刪除多餘的分布式表,僅保留一個即可。
Kafka/RabbitMQ引擎表不支援:表示存在Kafka/RabbitMQ引擎表,請刪除。
多副本執行個體存在非Replicated的
*MergeTree表:表示資料在多副本之間不一致,擴縮容在遷移資料期間會出現異常。分布式表和本地表的列不一致:表示需要您修改分布式表和本地表的列一致,否則擴縮容在遷移資料期間會出現異常。
該表在部分節點缺失:您需要在不同分區建立同名的表。針對物化視圖inner表,建議重新命名inner表,然後重建物化視圖,指向重新命名後的inner表。具體操作,請參見物化視圖inner表在不同分區不一致。
在變更配置頁面,根據您的業務需求,配置部署方案、可用性區域、專有網交換器以及停寫時間。
說明升級為多可用性區域部署會發生資料移轉,為了保證遷移的成功率,停寫時間有以下要求:
建議將停寫時間至少設定為30分鐘。
升級必須在配置變更建立後的5天內結束,因此,結束停寫時間的日期必須小於或等於
當前日期+5。為了降低遷移對您業務的影響,建議您設定的停寫時間範圍處於您的業務低峰時段。
單擊立即購買,並根據頁面提示完成支付。
升級為多可用性區域部署預計等待30分鐘以上,等待時間長度和資料量相關。具體任務以控制台顯示的叢集狀態為準,當叢集狀態由水平變配中轉變為运行中時,表示升級完成。
步驟四:建立Kafka和RabbitMQ引擎表
登入叢集,執行步驟一:處理Kafka和RabbitMQ引擎表備份的建表語句。如何登入目的地組群,請參見通過DMS串連ClickHouse。
步驟五:遷移非MergeTree類型表的業務資料
登入叢集,通過OSS遷移步驟二:備份非MergeTree類型表的業務資料備份的資料。具體操作,請參見從OSS匯入資料。
企業版
登入雲資料庫ClickHouse控制台,在頁面左上方,選擇叢集所在地區,然後在集群清單頁面,單擊企业版实例列表頁簽。
單擊目的地組群的執行個體ID,進入叢集詳情頁。
單擊左側導覽列的集群資訊,在集群屬性地區下,單擊部署模式後方的升級到多可用性區域部署。
在升級到多可用性區域部署彈窗中,配置可用區和升级时间,然後單擊確定。
升級為多可用性區域部署預計等待20分鐘以上,等待時間長度和資料量相關。具體任務執行狀態以控制台顯示的叢集狀態為準,當叢集狀態由变配中轉變為运行中時,表示升級完成。