当前位置: 首页 > article >正文

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
  1. 如果zookeeper设置了密码的话,则执行以下语句登录
addauth digest 账号:密码
  1. 查看库或者表是否存在
ls /
  1. 目录层级一般为/clickhouse/tables/分片/库/表
    可以使用ls命令一层一层查看,如我自己的路径为以下,执行之后可以看到db_test库下面的所有表,查看报错的表是否在其中
ls /clickhouse/tables/01/db_test/
  1. 删除该有问题的表
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 端口
  1. 分别执行以下命令
system restart replica 库名.表名

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

system restore replica 库名.表名

在执行的过程中部分节点会报错,提示该节点的表不是readonly状态,忽略该报错即可。可以看到之前这个表出问题的节点会显示执行成功。
9. 等待执行完成后,继续到zk的客户端中进行查询,会发现之前删除的表自动显示了

 ls /clickhouse/tables/01/db_test/
  1. 再次执行修改表的ddl语句,发现执行成功了。

http://www.kler.cn/a/467124.html

相关文章:

  • Android 14.0 系统限制上网系列之iptables用IOemNetd实现app上网黑名单的实现
  • 行为模式4.观察者模式------消息推送
  • LangChain+博查搜索API轻松实现实时信息搜索
  • 【每日学点鸿蒙知识】ASON工具、自定义tabbar、musl、Text异常截断等
  • 【C语言】可移植性陷阱与缺陷(五): 移位运算符
  • 初学stm32 --- 存储器类型
  • 文献阅读 250104-Overconfidence in climate overshoot
  • 文件上传漏洞利用与绕过姿势总结
  • 【大模型】ChatGPT 数据分析与处理使用详解
  • SQL 基础教程 - SQL SELECT 语句
  • 部署项目添加工程名的步骤
  • 哈希算法详解及案例应用
  • Jurgen提出的Highway Networks:LSTM时间维方法应用到深度维
  • Java:缓存:LinkedHashMap实现Lru
  • 【C++】开源:Armadillo数值计算库配置与使用
  • 第28天:PHP应用Cookie脆弱Session固定Token唯一身份验证数据库通讯
  • 一文理解Vue.js 与 Vue Router:构建现代单页面应用
  • Maven 详细配置:Maven settings 配置文件的详细说明
  • vue3 css实现文字输出带光标显示,文字输出完毕,光标消失的效果
  • 145页PPT智慧矿山整体规划建设方案