本文介紹如何在云數據庫 ClickHouse 社區兼容版控制臺一鍵升級實例內核大版本。
前提條件
云數據庫 ClickHouse 社區兼容版內核版本為22.8及以上實例和部分20.3、20.8、21.8實例。
說明查看是否符合升級版本要求,請在集群信息頁面的集群屬性中查看版本,若版本號右側有大版本升級,則版本符合升級要求。
實例狀態為運行中。
注意事項
為確保升級過程順利進行,建議您在進行升級前停止業務側的寫入操作。因為在升級過程中,集群會主動停止寫入,但若業務未提前停止寫入,則可能導致同步等待時間過長,甚至無法在短時間內完成同步,從而影響升級的時效性。
不同內核大版本間可能存在寫入和查詢的功能、語法、性能的差異。生產環境,請提前測試驗證,已確保排除這些差異對業務的影響。
版本升級過程會多次重啟實例,部分實例由于庫表數量、分區(Parts)數量過多等因素單次啟動過程需要較長時間。您可通過測試驗證具體升級時長。
如果您的實例數據大量存在冷存存儲,由于克隆不會克隆冷存數據,所以通過克隆驗證的耗時可能會比一鍵升級的耗時長。
測試驗證的具體操作,請參見克隆實例驗證版本兼容流程。
一鍵升級內核大版本流程啟動后,無法取消。
一鍵升級內核大版本后無法回退到原版本。
說明一鍵升級內核大版本后不支持版本回退,如果您需要在版本升級后,仍然具有能回退到原來版本的能力,可嘗試通過克隆的方式進行升級,具體操作,請參見通過克隆升級內核大版本。
版本升級期間實例會進行多次重啟,不可讀也不可寫,建議在業務低峰期進行操作。
克隆實例驗證版本兼容流程
建議您先使用克隆實例進行升級測試,確認新版本實例完全兼容原版本實例的功能以及升級時長后再進行升級。
開啟了冷熱分層的實例,克隆僅包含熱數據(即新實例無法查詢到冷數據)。
參考流程:
進入目標實例集群信息頁面,點擊左側導航欄中的備份恢復,實例備份完成后,點擊恢復實例。
選擇從實時副本克隆,目標內核版本為升級目標版本。
創建克隆實例。
進行兼容性驗證,常見驗證方法:
拉取原實例上的query_log,在新實例上運行,驗證業務查詢的新版本兼容性。
回歸業務功能。
操作步驟
使用阿里云賬號登錄云數據庫ClickHouse控制臺。
在頁面左上角,選擇目標集群所在的地域。
在左側導航欄,單擊社區版實例列表。
找到目標集群,單擊集群ID,進入集群信息頁面。
在集群屬性區域,單擊版本右側的大版本升級。
重要如果這里顯示為當前實例僅支持遷移升級,則可參見通過遷移升級內核大版本進行大版本升級。
根據頁面提示,配置如下參數,點擊確定按鈕。
配置項 | 說明 | 示例 |
將實例內核版本升級至 | 目標實例版本,版本升級后無法回退。 當前僅支持的版本有23.8(推薦)和22.8。 | 23.8(LTS版本) |
版本升級執行時間 | 升級版本的執行時間。 重要 選擇指定時間升級和可維護時間段升級后,實例的狀態會由運行中變為版本升級中,在指定時間或者運維窗口到來前,實例可正常對外提供讀寫服務,但是不能執行升降配、擴縮容、遷移等運維操作。
| 2024-05-29 14:46 |
是否執行克隆驗證 | 勾選已執行克隆驗證或跳過克隆驗證(不推薦) | 已執行克隆驗證 |
常見問題
Q:升級內核大版本時,報存在不支持的Kafka表定義
的錯該怎么辦?
A:在售版本的Kafka表不支持用DEFAULT
定義字段默認值,從而導致內核包啟動失敗。解決步驟如下:
使用
select create_table_query from system.tables where engine = 'Kafka'
找到所有的Kafka表。備份找到的表的DDL語句。
刪除找到的表。
重新建表。
重要建表時不要使用
DEFAULT
定義字段默認值。
Q:升級內核大版本時,報存在不支持的MaterializedMySQL表定義
的錯該怎么辦?
A:在售版本與源實例版本的MaterializeMySQL引擎的配置參數不兼容。解決步驟如下:
使用
select name from system.databases where engine = 'MaterializeMySQL'
找到是MaterializeMySQL引擎的數據庫。備份找到的數據庫的DDL語句。
刪除找到的數據庫。
升級內核版本。
調整備份的數據庫的DDL以適用目標版本,重新創建MaterializeMySQL引擎的數據庫。
Q:升級內核大版本時,報存在除20.3不支持的表定義Nullable(Array(*))/SecondaryIndex(存在KEY定義)
的錯該怎么辦?
A:如果您的實例版本為20.3版本,可能使用了阿里云自研的部分功能。例如以下功能:
定義表字段為Nullable(Array(*))類型。
使用KEY關鍵字定義的二級索引。
由于這些功能并沒有合并回開源ClickHouse,所以實例版本20.8之后并不包含這些功能。建議您在升級之前調整相關的表。可進行以下操作:
驗證源實例版本與目標版本的兼容性。
重要由于20.3和在售版本跨度較大,建議您在實施升級之前充分驗證,以避免升級對業務造成影響。
刪除
Nullable(Array(*))
修飾的字段,重新添加字段;刪除使用KEY關鍵字定義的二級索引,在升級完成后重新為表添加跳數索引。
重要兩種索引實現原理有差異可能會造成性能差異。