clickhouse集群 某个节点重启失败: The local set of parts of table xxx doesn't look like the set of parts in ZooKeeper

报错解释为:
-
Too many parts (300):
-
提示
Merges are processing significantly slower than inserts,即数据分片(parts)数量过多,合并速度跟不上插入速度,导致TOO_MANY_PARTS异常。 -
这个问题通常是由于表的分区(PARTITION)过多,或者合并(merge)未能及时执行导致的。
-
-
The local set of parts doesn’t match ZooKeeper:
-
decision.service_log_prod表的本地数据和 ZooKeeper 记录的元数据不匹配,导致ATTACH TABLE失败。
-
1、通过df -h检查磁盘空间是够用的,使用量20%
2、#查看表结构是否是可复制的表
#登录到其中一台clickhouse clickhouse-client --host <ip> --port 9000 --user default --password <密码> 查看表结构,ReplicatedMergeTree表示复制表
SHOW CREATE TABLE decision.service_log_prod;

3、检查数据目录姐表结构目录是否有service_log_prod.sql


4、备份数据目录到其他地方:cp -r /data/clickhouse_bin_cluster/store/115/115a6234-451c-4d70-8290-9b7a277906a4 /data/ck_back
5、重命名表结构文件:mv /data/clickhouse_bin_cluster/metadata/decision/service_log_prod.sql /data/clickhouse_bin_cluster/decision/service_log_prod.bak
6、删除/data/clickhouse_bin_cluster/store/115/115a6234-451c-4d70-8290-9b7a277906a4/service_log_prod.sql
7、重启ck成功
8、从其他节点复制service_log_prod表结构的sql到当前节点执行create table语句,但是报错:
Code: 253. DB::Exception: Received from localhost:9000. DB::Exception: Replica /clickhouse/tables/01/service_log_prod/replicas/172.27.xx.xxx already exists. (REPLICA_IS_ALREADY_EXIST)
由于ClickHouse 副本 在 ZooKeeper 里已经注册了,但当前 ClickHouse 服务器尝试 重复注册相同副本,导致冲突。
使用sql删除注册信息:
SYSTEM DROP REPLICA '172.27.xx.xxx' FROM ZKPATH '/clickhouse/tables/01/service_log_prod';
再执行创建表的sql成功。
9、同步数据:SYSTEM SYNC REPLICA decision.service_log_prod;
浙公网安备 33010602011771号