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 過來.
重新開機節點。