全部產品
Search
文件中心

ApsaraDB for ClickHouse:社區相容版叢集垂直變更配置和水平擴縮容

更新時間:Sep 02, 2025

為了應對業務的不斷變化,當您需要調整雲資料庫 ClickHouse 社區相容版叢集的配置或規模時,您可以對雲資料庫ClickHouse進行垂直變更配置和水平擴縮容操作,以協助您的業務在成本與效能之間達到最佳平衡。

垂直變更配置和水平擴縮容概覽

垂直變更配置相比水平擴縮容,變更配置耗時更短,因此對您的業務影響更小。當您的叢集效能指標未能滿足業務需求時,建議優先考慮垂直變更配置。

變更類型

適用情境

原理

影響

操作

垂直變更配置

CPU、記憶體、磁碟資源不足或冗餘時,增加或減少每個節點的資源。

增加或減少社區相容版叢集的節點規格、儲存空間和ZooKeeper規格,縱向擴充叢集的計算能力、儲存空間能力和分布式協作能力

說明

儲存空間不支援垂直降配。儲存空間縮容解決方案如下。

  • 如果您是多節點執行個體,您可以考慮水平縮容一個節點來達到儲存空間縮容的目的,具體需要根據您的業務需求而定。

  • 如果您是單節點執行個體,您可以考慮建立執行個體,通過執行個體遷移來達到儲存空間縮容的目的。

社區相容版叢集進行升級儲存類型和增加儲存空間後不會對執行個體產生影響(僅2021年12月01日之後建立的執行個體),但在變更集群規格和ZooKeeper規格後會重啟叢集。

重要
  • 垂直變更配置所需時間為5至10分鐘。重啟叢集所需的時間與叢集的資料量密切相關:庫表數量及冷存資料量越多,啟動時間越長。

  • 針對雙複本集群,因為涉及到副本之間的請求切換,升級過程中叢集可能出現串連閃斷現象,建議在業務低峰期進行變更配置並保證業務有重試機制。

  • 針對單複本集群,整個升級過程中叢集不可用,建議在業務低峰期或停寫狀態下進行變更配置並保證業務有重試機制。

  • ZooKeeper在業務高峰期進行變更配置可能會導致庫表中繼資料和實際資料不一致,建議在業務低峰期或停寫狀態下進行變更配置。

垂直升配和垂直降配

水平擴容

  • 遷移擴容:擴容後的叢集資料需重新分配的情境。

  • 簡單擴容:

    適用於叢集滿足以下條件的情境:

    • 在叢集擴容前,資料寫入方式是直接寫入本地表,或者寫入sharding key為rand方式的分布式表。

    • 擴容前後節點間的資料無需均衡。

重要

叢集中包含ReplacingMergeTree、CollapsingMergeTree、VersionedCollapsingMergeTree等表引擎的表,禁止使用簡單擴容。由於這些類型的表的資料只有在同一個節點上才能合并,然而,簡單的擴容會導致需要合并的資料被分散到不同的節點,從而使其無法進行合并。

遷移擴容:遷移擴容將增加社區相容版叢集節點數量,橫向擴充叢集的計算能力,並對已有歷史資料進行遷移和資料重分布。

簡單擴容:遷移擴容將增加社區相容版叢集節點數量,橫向擴充叢集的計算能力,資料是直接寫入本地表模式且擴容前後不依賴節點間的資料均衡。

  • 水平擴容過程中,全程禁止DDL操作。

  • 水平擴容過程中,叢集CPU和記憶體使用量率會升高,預計單節點佔用資源小於5核20GB。

  • 擴容完成後會持續一段時間高頻merge操作,這會導致IO使用率上升,從而引起業務請求的延遲增加。

水平擴容和水平縮容

水平縮容

  • 水平縮容:

    • 減少節點,節約成本。

    • 隨機下線節點,沒有指定固定的節點。

  • 指定節點縮容:下線指定的叢集規格類型為大儲存規格的叢集。

減少社區相容版叢集節點數量,降低成本。

  • 水平縮容過程中,全程禁止DDL操作。

  • 水平縮容過程中,叢集CPU和記憶體使用量率會升高,預計單節點佔用資源小於5核20GB。

  • 縮容完成後會持續一段時間高頻merge操作,這會導致IO使用率上升,從而引起業務請求的延遲增加。

水平擴容和水平縮容

前提條件

  • 叢集為社區相容版叢集。

  • 叢集狀態為運行中。

  • 叢集沒有未完成支付的續約訂單。

    說明

    您可以登入雲資料庫ClickHouse控制台,在頁面右上方,選擇費用 > 費用與成本在左側導覽列,單擊訂單管理,完成訂單支付或作廢該訂單。

注意事項

  • 垂直變更配置:僅2021年12月01日之後建立的雲資料庫ClickHouse社區相容版叢集支援變更ZooKeeper規格。ZooKeeper規格費用請參見社區相容版ZooKeeper規格費用

  • 水平擴縮容:

    • MergeTree類型引擎表水平擴容後,會將原有歷史資料移轉寫入新的叢集中並自動完成重分布。

      支援遷移的內容:

      • 庫、資料字典、物化視圖。

      • 表結構:除了Kafka和RabbitMQ引擎表以外的所有表結構。

      • 資料:增量遷移MergeTree族表的資料。

      不支援遷移的內容:

      • Kafka和RabbitMQ引擎表的表以及資料。

        重要

        配置變更時會遷移資料到建立執行個體,並最終切流到建立執行個體。為保證Kafka和RabbitMQ資料不分流,請先清理源叢集的Kafka和RabbitMQ引擎表,待變更完成後再重新建立。

      • 非MergeTree類型表(例如外表、Log表等)的資料。

      重要

      以上不支援的內容,在擴縮容過程中,您需根據操作步驟,手動處理。

    • 水平擴縮容過程中,全程禁止進行DDL操作。如不遵循,擴縮容最後,可能會出現資料校正不通過的現象,進而導致擴縮容失敗。

    • 水平擴容後內部節點IP會發生變化,如果依賴節點IP資料寫入和訪問,需重新擷取叢集的VPC網段IP,具體操作,請參見擷取叢集的VPC網段IP

    • 僅本地碟版本支援指定節點縮容。在指定節點縮容模式下,被下線的節點的資料將會丟失;而在水平縮容模式下,資料則不會丟失,而是會進行重分布。

  • 變更集群配置後,會持續一段時間高頻merge操作,這會導致IO使用率上升,從而引起業務請求的延遲增加。建議您提前規劃以應對業務請求延遲的潛在影響。具體merge操作時間的計算方法,請參見計算遷移結束後的merge時間

  • 變更集群配置過程中,叢集CPU和記憶體使用量率會升高,預計單節點佔用資源小於5核20GB。

費用

變更集群配置後,費用將會發生變化,具體費用請以控制台為準。更多資訊,請參見變更配置計費說明

垂直升配和垂直降配

  1. 登入雲資料庫ClickHouse控制台

  2. 在頁面左上方,選擇叢集所在地區。

  3. 叢集列表頁面,選擇社區版執行個體列表

  4. 在目標叢集ID操作列,單擊變更配置

  5. 變更配置彈窗中,選擇垂直升配或者垂直降配,單擊確定

  6. 變更配置降配頁面,根據業務需求選擇相應的變更配置。

    說明
    • 儲存空間儲存類型在進行變更配置時,不能與規格同時進行變更配置。

    • 叢集預設提供4核8 GB的ZooKeeper規格。您可以在監控警示頁面的叢集監控面板查看ZooKeeper指標是否存在資源瓶頸,當預設規格不滿足業務需求時請及時升配。

  7. 單擊立即購買,根據提示完成支付。

  8. 支付完成頁面,單擊管理主控台

  9. 社區版執行個體列表狀態列,可查看目的地組群的狀態。

    說明
    • 變更儲存空間後,變更立即生效,叢集狀態為運行中

    • 變更規格ZooKeeper規格後,預計等待10~15分鐘。當叢集狀態由變更配置中轉變為運行中時,垂直升配或垂直降配成功。

水平擴容和水平縮容

步驟一:處理Kafka和RabbitMQ引擎表

Kafka/RabbitMQ引擎表不支援遷移,您需自主處理此類表。

  1. 登入叢集,通過以下語句,查詢需要處理的表。如何登入叢集,請參見通過DMS串連ClickHouse

    SELECT * FROM  `system`.`tables` WHERE engine IN ('RabbitMQ', 'Kafka');
  2. 查看目標表的建表語句並備份。

    SHOW CREATE TABLE <aim_table_name>;
  3. 刪除Kafka和RabbitMQ引擎的表。

    重要

    刪除Kafka時,需同時刪除引用Kafka表的物化視圖,否則導致擴縮容失敗。

步驟二:備份非MergeTree類型表的業務資料

  1. 登入叢集,通過以下語句,查看需要遷移資料的非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')
    ))
  2. 備份資料。

    您需將以上非MergeTree類型的業務資料進行備份。具體操作,請參見備份資料至OSS

步驟三:控制台擴縮容操作

  1. 登入雲資料庫ClickHouse控制台

  2. 在頁面左上方,選擇叢集所在地區。

  3. 叢集列表頁面,選擇社區版執行個體列表

  4. 在目標叢集ID操作列,單擊變更配置

  5. 變更配置彈窗中,選擇水平擴容或者水平縮容,單擊確定

  6. 在彈出的擴容或縮容檢測視窗,查看檢測狀態。

    說明

    進入檢測視窗時,水平擴容預設選擇的遷移擴容的方式,如需選擇簡單擴容,需單擊此頁面的上一步,在擴容選擇彈框中,選擇簡單擴容,單擊下一步,進入變更配置頁面。

    • 檢測成功:單擊下一步

    • 檢測失敗:根據頁面提示進行相應修改,修改完成後單擊重試檢測。檢測成功後,單擊下一步

      在水平擴容的過程中,檢測失敗的原因主要有以下幾種。

      • 缺失唯一的分布式表:表示本地表沒有建立分布式表,需要再建立一個對應的分布式表。

      • 對應的分布式表不唯一:表示本地表有不止一個分布式表,請刪除多餘的分布式表,僅保留一個即可。

      • Kafka/RabbitMQ引擎表不支援:表示存在Kafka/RabbitMQ引擎表,請刪除。

      • 多副本執行個體存在非Replicated的*MergeTree表:表示資料在多副本之間不一致,擴縮容在遷移資料期間會出現異常。

      • 分布式表和本地表的列不一致:表示需要您修改分布式表和本地表的列一致,否則擴縮容在遷移資料期間會出現異常。

      • 該表在部分節點缺失:您需要在不同分區建立同名的表。針對物化視圖inner表,建議重新命名inner表,然後重建物化視圖,指向重新命名後的inner表。具體操作,請參見物化視圖inner表在不同分區不一致

  7. 變更配置降配頁面,根據您的業務需求,配置Server節點數量以及停寫時間。

    說明

    叢集擴縮容會發生資料移轉,為了保證遷移的成功率,停寫時間有以下要求:

    • 建議您停寫時間至少設定30分鐘。

    • 擴縮容必須在配置變更建立後的5天內結束,因此,源叢集停寫時間的結束日期必須小於或等於當前日期+5

    • 為了降低擴縮容對您業務的影響,建議您設定的停寫時間範圍處於您的業務低峰時段。

  8. 單擊立即購買,並根據頁面提示完成支付。

  9. 訂購完成頁面,單擊管理主控台

  10. 社區版執行個體列表狀態列,可查看目的地組群的狀態。當叢集狀態由擴縮容中轉變為運行中時,水平擴容或水平縮容成功。

說明

水平擴容或水平縮容預計等待30分鐘以上,等待時間長度和資料量相關,具體任務執行狀態以控制台顯示的叢集狀態為準。

步驟四:建立Kafka和RabbitMQ引擎表

登入叢集,執行步驟一:處理Kafka和RabbitMQ引擎表備份的建表語句。如何登入目的地組群,請參見通過DMS串連ClickHouse

步驟五:遷移非MergeTree類型表的業務資料

登入叢集,通過OSS遷移步驟二:備份非MergeTree類型表的業務資料備份的資料。具體操作,請參見從OSS匯入資料