本文介紹如何在雲資料庫 ClickHouse 社區相容版控制台一鍵升級叢集核心大版本。
背景知識
為提升服務體驗,需及時將舊版本叢集升級至最新版本。雲資料庫 ClickHouse 社區相容版提供控制台一鍵升級功能。由於叢集的架構不同,所以其升級原理也不同,具體原理如下:
舊架構叢集:系統自動建立新版本的新叢集,將原叢集資料移轉至新叢集,通過遷移完成升級。
新架構叢集:直接通過複製升級核心版本實現原執行個體版本更新。
請根據叢集版本選擇升級操作,確保平穩過渡。
準備工作:確認叢集架構
在進行升級前,您需根據控制台操作確認叢集的架構,便於選擇合適的驗證方法和操作步驟。具體操作如下:
在執行個體列表單擊目的地組群ID,進入集群資訊頁面。
在集群屬性地區,單擊版本右側的大版本升级。
在大版本升级彈框中,查看第三個設定時間的配置項。
版本升级执行时间:新架構。
停写时间:舊架構。
新架構的叢集升級,請參見新架構叢集升級。
舊架構的叢集升級,請參見舊架構叢集升級。
新架構叢集升級
前提條件
叢集狀態為運行中。
注意事項
一鍵升級核心大版本流程啟動後,無法取消。
說明一鍵升級核心大版本後不支援版本回退,如果您需要在版本升級後,仍然具有能回退到原來版本的能力,可嘗試通過複製的方式進行升級,具體操作,請參見通過複製升級核心大版本。
一鍵升級核心大版本始終只有一個叢集,且升級後無法回退到原版本。
為確保升級過程順利進行,建議您在進行升級前停止業務側的寫入操作。因為在升級過程中,叢集會主動停止寫入,但若業務未提前停止寫入,則可能導致同步等待時間過長,甚至無法在短時間內完成同步,從而影響升級的時效性。
為了降低升級對您業務的影響,強烈建議您在升級前,進行以下內容的驗證。
相容性以及效能驗證:寫入和查詢的功能、文法、效能的差異驗證。
升級時間長度驗證:版本升級過程會多次重啟執行個體,部分執行個體由於庫表數量、分區(Parts)數量過多等因素單次啟動過程需要較長時間。
重要如果叢集資料大量存在冷存儲存,並且使用的是複製驗證,由於複製不會複製冷存資料,所以一鍵升級所需的時間相較於複製驗證所需的時間更長。
如何驗證,請參見驗證版本相容性。
叢集影響
版本升級期間叢集會進行多次重啟,不可讀也不可寫,建議在業務低峰期進行操作。
驗證版本相容性
由於一鍵升級核心大版本始終只有一個叢集,且升級後無法回退到原版本,強烈建議您先進行升級測試,確認新版本叢集完全相容原版本叢集的功能以及升級時間長度後再進行升級。驗證步驟如下:
開啟了冷熱分層的叢集,複製僅包含熱資料(即新叢集無法查詢到冷資料)。
進入目標執行個體集群資訊頁面,點擊左側導覽列中的備份恢復,執行個體備份完成後,點擊恢复实例。
選擇從即時副本複製,目標核心版本為升級目標版本。
建立複製叢集。
進行相容性驗證。
驗證業務查詢的新版本相容性,請參見SQL相容性驗證。
迴歸業務功能。
操作步驟
使用阿里雲帳號登入雲資料庫ClickHouse控制台。
在頁面左上方,選擇目的地組群所在的地區。
在左側導覽列,單擊默認實例列表。
找到目的地組群,單擊叢集ID,進入集群資訊頁面。
在集群屬性地區,單擊版本右側的大版本升级。
根據頁面提示,配置如下參數,點擊確定按鈕。
配置項
說明
樣本
將執行個體核心版本升級至
目的地組群版本,版本升級後無法回退。
當前僅支援的版本有25.3。
23.8(LTS版本)
版本升級執行時間
升級叢集版本的執行時間。
重要選擇指定時間升級和可維護時間段升級後,叢集的狀態會由运行中變為版本升级中,在指定時間或者營運視窗到來前,叢集可正常對外提供讀寫服務,但是不能執行升降配、擴縮容、遷移等營運操作。
指定时间:選擇未來某一指定時間點做大版本升級。
可维护时间段升级:預設選取當前叢集的營運視窗時間。
立即升級:立即執行升級操作。
2024-05-29 14:46
是否執行複製驗證
勾選已执行克隆验证或跳过克隆验证(不推荐)
已執行複製驗證
舊架構叢集升級
前提條件
叢集狀態為運行中。
注意事項
一鍵升級核心大版本始終只有一個叢集,且升級後無法回退到原版本。
說明一鍵升級核心大版本後不支援版本回退,如果您需要在版本升級後,仍然具有能回退到原來版本的能力,可嘗試通過遷移的方式進行升級,具體操作,請參見遷移升級。
叢集升級時,叢集庫表需要注意的內容如下:
MergeTree類型引擎表,升級時,會將原有歷史資料移轉寫入新的叢集中並自動完成重分布。
非MergeTree類型(如外表,Log表等),升級時,僅進行表結構遷移,不進行資料移轉。
物化視圖,在叢集升級時,僅進行結構遷移,不進行資料移轉。
Kafka/RabbitMQ引擎表在叢集升級時,不支援遷移,升級前需刪除此類表。
升級後內部節點IP會發生變化,如果依賴節點IP資料寫入和訪問,需重新擷取叢集的VPC網段IP,具體操作,請參見擷取叢集的VPC網段IP。
為了降低升級對您業務的影響,強烈建議您在升級前,進行以下內容的驗證。
相容性以及效能驗證:寫入和查詢的功能、文法、效能的差異驗證。
升級時間長度驗證:版本升級過程會多次重啟執行個體,部分執行個體由於庫表數量、分區(Parts)數量過多等因素單次啟動過程需要較長時間。
如何驗證,請參見驗證版本相容性。
叢集影響
社區相容版叢集在升級過程中,除遷移剩餘的最後的10分鐘不可寫外,全程可讀可寫。如何查看遷移剩餘的時間,請參見查看升級進度。
驗證版本相容性
由於一鍵升級核心大版本始終只有一個叢集,且升級後無法回退到原版本,強烈建議您先進行升級測試,確認新版本叢集完全相容原版本叢集的功能以及升級時間長度後再進行升級。驗證步驟如下:
購買新叢集進行遷移驗證。請參見通過遷移升級核心大版本。
在新叢集中,進行SQL相容性驗證。如何驗證,可參見SQL相容性驗證。
迴歸業務功能進行驗證。
升級叢集
使用阿里雲帳號登入雲資料庫ClickHouse控制台。
在頁面左上方,選擇目的地組群所在的地區。
在左側導覽列,單擊默認實例列表。
找到目的地組群,單擊叢集ID,進入集群資訊頁面。
在集群屬性地區,單擊版本右側的大版本升级。
根據頁面提示,配置如下參數,點擊確定按鈕。
配置項
說明
樣本
將執行個體核心版本升級至
目的地組群版本,版本升級後無法回退。
當前僅支援的版本有23.8。
23.8(LTS版本)
停写时间
為了確保升級後資料與升級前的資料保持一致,在升級的最後10分鐘內,叢集會進行主動停止寫入操作。停寫時間的設定規則如下:
為了保證升級的成功率,建議您停寫時間至少設定30分鐘。
升級必須在5天內結束,因此,叢集停写时间的結束日期必須小於或等於
當前日期+5天。為了降低停寫對您業務的影響,建議您設定的停寫時間範圍處於您的業務低峰期。
2025-03-20 10:08-2025-03-25 10:08是否執行執行個體遷移驗證
勾選已执行实例迁移验证或跳過執行個體遷移驗證(不推薦)
已執行執行個體遷移驗證
後續操作。
查看升級進度
使用阿里雲帳號登入雲資料庫ClickHouse控制台。
在頁面左上方,選擇目的地組群所在的地區。
在左側導覽列,單擊默認實例列表。
找到目的地組群,單擊叢集ID,進入集群資訊頁面。
在集群狀態地區,單擊状态右側的查看版本升级进度。
在彈出的修改停写窗口對話方塊中,查看升級進度。例如MergeTree表結構遷移的進度、資料移轉的進度、資料移轉預計的剩餘時間、以及其他結構遷移進度。
修改升級停寫時間
當您發現時間已超過您設定的停寫時間,而叢集狀態仍顯示為版本升級中時,這表明在升級過程中,叢集資料移轉尚未完成。您需要調整停寫時間,以確保叢集升級的順利完成。
使用阿里雲帳號登入雲資料庫ClickHouse控制台。
在頁面左上方,選擇目的地組群所在的地區。
在左側導覽列,單擊默認實例列表。
找到目的地組群,單擊叢集ID,進入集群資訊頁面。
在集群狀態地區,單擊状态右側的查看版本升级进度。
在彈出的修改停写窗口對話方塊中,修改停写时间後,單擊確認。
說明停写时间設定規則,與升級叢集中的停写时间的設定一致。
取消升級
當您發現升級已對您的業務造成影響,期望快速停止升級操作時,您可以通過取消升級來終止該操作。
使用阿里雲帳號登入雲資料庫ClickHouse控制台。
在頁面左上方,選擇目的地組群所在的地區。
在左側導覽列,單擊默認實例列表。
找到目的地組群,單擊叢集ID,進入集群資訊頁面。
在集群狀態地區,單擊状态右側的查看版本升级进度。
在彈出的修改停写窗口對話方塊中,單擊取消升级。
說明單擊取消升级後,升級任務不會立即終止,大約5分鐘後才會真正停止。
常見問題
Q:升級核心大版本時,報存在不支援的Kafka表定義的錯該怎麼辦?
A:在售版本的Kafka表不支援用DEFAULT定義欄位預設值,從而導致核心包啟動失敗。解決步驟如下:
使用
select create_table_query from system.tables where engine = 'Kafka'找到所有的Kafka表。備份找到的表的DDL語句。
刪除找到的表。
重建立表。
重要建表時不要使用
DEFAULT定義欄位預設值。
Q:升級核心大版本時,報存在不支援的MaterializedMySQL表定義的錯該怎麼辦?
A:在售版本與源叢集版本的MaterializedMySQL引擎的配置參數不相容。解決步驟如下:
使用
select name from system.databases where engine = 'MaterializedMySQL'找到是MaterializedMySQL引擎的資料庫。備份找到的資料庫的DDL語句。
刪除找到的資料庫。
升級核心版本。
調整備份的資料庫的DDL以適用目標版本,重新建立MaterializedMySQL引擎的資料庫。
Q:升級核心大版本時,報存在除20.3不支援的表定義Nullable(Array(*))/SecondaryIndex(存在KEY定義)的錯該怎麼辦?
A:如果您的叢集版本為20.3版本,可能使用了阿里雲自研的部分功能。例如以下功能:
定義表欄位為Nullable(Array(*))類型。
使用KEY關鍵字定義的二級索引。
由於這些功能並沒有合并回開源ClickHouse,所以執行個體版本20.8之後並不包含這些功能。建議您在升級之前調整相關的表。可進行以下操作:
驗證源叢集版本與目標版本的相容性。
重要由於20.3和在售版本跨度較大,建議您在實施升級之前充分驗證,以避免升級對業務造成影響。
刪除
Nullable(Array(*))修飾的欄位,重新添加欄位;刪除使用KEY關鍵字定義的二級索引,在升級完成後重新為表添加跳數索引。
重要兩種索引實現原理有差異可能會造成效能差異。