天天看點

ClickHouse-常見問題

1.分布式DDL某資料節點的副本不執行

(1)問題:使用分布式 ddl 執行指令 create table on cluster xxxx 某個節點上沒有建立表,但是 client 傳回正常,檢視日志有如下報錯。

<Error> xxx.xxx: Retrying createReplica(), because some other replicas were created at the same time

(2)解決辦法:重新開機該不執行的節點。

2.資料副本表和資料不一緻

(1)問題:由于某個資料節點副本異常,導緻兩資料副本表不一緻,某個資料副本缺少表,需要将兩個資料副本調整一緻。

(2)解決辦法:

在缺少表的資料副本節點上建立缺少的表,建立為本地表,表結構可以在其他資料副本通過 show create table xxxx 擷取。

表結建構立後,clickhouse 會自動從其他副本同步該表資料,驗證資料量是否一緻即可。

3.副本節點全量恢複

(1)問題:某個資料副本異常無法啟動,需要重新搭建副本。

(2)解決辦法:

清空異常副本節點的 metadata 和 data 目錄。

從另一個正常副本将 metadata 目錄拷貝過來(這一步之後可以啟動資料庫,但是隻有表結構沒有資料)。

執行 sudo -u clickhouse touch /data/clickhouse/flags/force_restore_data

啟動資料庫。

4.資料副本啟動缺少zk表

(1)問題:某個資料副本表在 zk 上丢失資料,或者不存在,但是 metadata 中繼資料裡

存在,導緻啟動異常,報錯:

Can’t get data for node /clickhouse/tables/01-

02/xxxxx/xxxxxxx/replicas/xxx/metadata: node doesn’t exist (No node):

Cannot attach table xxxxxxx

(2)解決辦法:

metadata 中移除該表的結構檔案,如果多個表報錯都移除

mv metadata/xxxxxx/xxxxxxxx.sql /tmp/

啟動資料庫

手工建立缺少的表,表結構從其他節點 show create table 擷取。

建立後會自動同步資料,驗證資料是否一緻。

5.ZK table replicas 資料未删除,導緻重建表報錯

(1)問題:重建表過程中,先使用 drop table xxx on cluster xxx ,各節點在 clickhouse 上table 已實體删除,但是 zk 裡面針對某個 clickhouse 節點的 table meta 資訊未被删除(低機率事件),因 zk 裡仍存在該表的 meta 資訊,導緻再次建立該表 create table xxx on cluster, 該節點無法建立表(其他節點建立表成功),報錯:Replica /clickhouse/tables/01-03/xxxxxx/xxx/replicas/xxx already exists..

(2)解決辦法:

從其他資料副本 cp 該 table 的 metadata sql 過來.

重新開機節點。

6.clickhouse節點意外關閉

7.其它