clickhouse Cannot execute replicated DDL query, maximum retries exceeded报错解决

报错信息

在clickhouse中执行DDL命令对表进行改动时,出现报错Cannot execute replicated DDL query, maximum retries exceeded

解决方案

一、官方解决方案

官方说这是一个特定版本的bug,但是实际我自己用的22.9.34版本,也存在这个问题,贴上官方的解决方案,遇到该问题的时候可以先试试官方的方案
官方方案

二、新的方案

照着官方给的方案试过后,并没有解决我的问题,该报错仍然存在。经过一番尝试后,整理一下我自己的方案

  1. 进入到zookeeper的bin目录中,执行命令连接到zookeeper或者keeper的命令行中(连接zk或者keeper都是同样的命令)

    ./zkCli.sh -server ZK的IP:2181

  2. 如果zookeeper设置了密码的话,则执行以下语句登录

    addauth digest 账号:密码

  3. 查看库或者表是否存在

    ls /

  4. 目录层级一般为/clickhouse/tables/分片/库/表
    可以使用ls命令一层一层查看,如我自己的路径为以下,执行之后可以看到db_test库下面的所有表,查看报错的表是否在其中

    ls /clickhouse/tables/01/db_test/

  5. 删除该有问题的表

    deleteall /clickhouse/tables/01/db_test/表名

删除之后再次执行ls /clickhouse/tables/01/db_test查看,看是否确实已经删除

  1. 如果存在多个zookeeper或者keeper,则使用ctrl+c退出目前的zk,然后重复1到5步,去删除其他节点上的表。删除的时候可能会提示该节点上没有这个表,则直接跳过即可

  2. 登录到任意一台CK机器上,连接到命令行中

    clickhouse-client -u 账号 --password 密码 -h IP地址 --port 端口

  3. 分别执行以下命令

    system restart replica 库名.表名

等待执行完后继续执行下述命令

复制代码
system restore replica 库名.表名

在执行的过程中部分节点会报错,提示该节点的表不是readonly状态,忽略该报错即可。可以看到之前这个表出问题的节点会显示执行成功。

  1. 等待执行完成后,继续到zk的客户端中进行查询,会发现之前删除的表自动显示了

    ls /clickhouse/tables/01/db_test/

  2. 再次执行修改表的ddl语句,发现执行成功了。

相关推荐
阿坤带你走近大数据3 天前
ClickHouse的介绍
clickhouse
南修子5 天前
【Flink 30天】Day24-27 实时数仓规范:ODS→DWD→DWS→ADS 分层 + Temporal Join + 生产最佳实践
clickhouse·flink·实时数仓·数据分层·temporaljoin
l1t20 天前
DeepSeek总结的用Parquet从 ClickHouse 迁移至 CedarDB查询
clickhouse·cedardb
longxibo1 个月前
【Ubuntu datasophon1.2.1 二开之六:解决CLICKHOUSE安装问题】
大数据·linux·clickhouse·ubuntu
l1t1 个月前
在python 3.14 容器中安装和使用chdb包
开发语言·python·clickhouse·chdb
linweidong1 个月前
别让老板等:千人并发下的实时大屏极致性能优化实录
jmeter·clickhouse·性能优化·sentinel·doris·物化视图·离线数仓
Paraverse_徐志斌1 个月前
基于 Kafka + Flink + ClickHouse 电商用户行为实时数仓实践
大数据·clickhouse·flink·kafka·olap·etl
李兆龙的博客1 个月前
从一到无穷大 #62 ClickHouse 加速机制持久化格式拆解
clickhouse
麦兜和小可的舅舅1 个月前
ClickHouse 一次Schema修改造成的Merge阻塞问题的分析和解决过程
clickhouse