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

1.ck部署为了集群模式,三节点,其中一个节点的因为负载和内存高被重启,重启时log报错:

 报错解释为:

  • 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;

 

posted @ 2025-03-31 17:48  瘦阿瘦  阅读(163)  评论(0)    收藏  举报