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语句,发现执行成功了。

相关推荐
risc1234565 天前
【ClickHouse】RollingBitmap
clickhouse
斯特凡今天也很帅5 天前
clickhouse如何查看操作记录,从日志来查看写入是否成功
数据库·clickhouse
袖清暮雨10 天前
ClickHouse讲解
大数据·数据库·数据仓库·clickhouse·oracle
江枫渔火L11 天前
使用clickhouse的ReplacingMergeTree引擎表做活跃玩家信息表
数据库·clickhouse
潇凝子潇13 天前
Doris ClickHouse Greenplum 对比
clickhouse·doris·greenplum
递归尽头是星辰15 天前
ClickHouse核心优势分析与场景实战
大数据·数据仓库·clickhouse·实时分析·实时查询
鲁尼的小宝贝16 天前
基于Flink的数据中台管理平台
java·大数据·clickhouse·flink·yarn
问道飞鱼20 天前
【大数据知识】今天聊聊Clickhouse部署方案
大数据·clickhouse·部署
Fireworkitte23 天前
ClickHouse详解
clickhouse
知其_所以然24 天前
使用docker安装clickhouse集群
clickhouse·docker·容器