問題場景
(1)所有表使用:MergeTree
(2)使用者對某表 table1 進行大量更新操作(1w+條UPDATE操作)
(3)查詢頁面部分資料異常
(4)運維側定位到clickhouse故障,無法啟動
問題排查
(1)初始版本上線未使用clickhouse Replicated功能,無法在從節點恢複資料。
(2)磁盤中可以看到 table1 下存在大量mutation檔案。
(3)删除mutation檔案檔案,clickhouse重新開機成功。
問題總結
Mutation操作
(1)ClickHouse 提供了 DELETE 和 UPDATE 的能力,這類操作被稱為 Mutation 查詢。
(2)Mutation能最終實作修改和删除,是異步實作,沒有事務控制。
(3)Mutation 語句是一種“很重”的操作,更适用于批量資料的修改和删除,單條資料的UPDATE 操作代價是高昂的。
副本引擎
(1)所有表使用:MergeTree 引擎,沒有備份能力;後續調整為備份引擎:Replicated功能。
後續問題
(1)ReplicatedMergeTree引擎對資料無法去重,導緻資料成倍增加,統計數值成倍累加。
(2)最後,重新定義表格引擎,采用副本去重引擎:ReplicatedReplacingMergeTree
(3)每次全量導出資料時,可能會先truncate表資料,存在一段時間查詢空缺。
建議使用clickhouse表重命名能力,導出完成後,重命名臨時表為新表。
重命名指令:
rename table db1.table1 to db1.table2;