故障分析 | ClickHouse 集群分布式 DDL 被阻塞案例一则
作者:任坤
现居珠海,先后担任专职 Oracle 和 MySQL DBA,现在主要负责 MySQL、mongoDB 和 Redis 维护工作。
本文来源:原创投稿
*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。
1、背景
线上有套10节点clickhouse集群,5分片 * 2副本,版本19.7.3。
开发执行一个创建分布式表的操作,9个节点都成功返回,有个节点报错,返回信息如下:
Code: 159. DB::Exception: Received from 127.0.0.1:9000. DB::Exception: Wa
tching task /clickhouse/task_queue/ddl/query‐0003271440 is executing longer
than distributed_ddl_task_timeout (=180) seconds. There are 1 unfinished ho
sts (0 of them are currently active), they are going to execute the query i
n background.
2、诊断
登录该节点查看show processlist,正在执行1个分布式ddl,该ddl已经运行100多个小时,应该是卡住了。
clickhouse的分布式ddl是串行执行的,每次将任务存储到zookeeper
的/clickhouse/task_queue/ddl目录,按照FIFO排列。
对于每个节点,只有当前的ddl执行完毕,后面的才能被调用。
select * from zookeeper where path='/clickhouse/task_queue/ddl' order by ctime desc\G
刚刚发起的创建分布式表ddl排在第一位,上述截图中的optimize table排在第23,说明被其阻塞的ddl有22条之多,开发也确认最近两天的ddl任务在该节点上都没有成功。
尝试将其kill,等待几个小时仍然没有效果。
加sync关键字,直接卡住。
尝试重启ck实例也卡住,最后只能Kill -9。
重启实例后该任务依然存在,而且执行了10多分钟没有要结束的意思,kill操作仍然无效。
既然这个ddl无法绕过,执行的时候又长时间不结束,只能曲线救国,重命名该表让其临时消失一会。
rename table log_catch_data_local to log_catch_data_local1;
optimize table当即返回,并且其后22个ddl也很快执行完毕,最后再将其重命名回原表。
此时再次执行optimize table,只需5s便成功返回,该问题解决。
3、总结
clickhouse的分布式ddl在每个节点是FIFO串行执行的,任意1个ddl卡住了都会阻塞后续任务。
本例中的卡住的ddl是optimize table,可以通过重命名表跳过;如果是增删列,可以在rename后手工对该表执行本地ddl。
如果上述方法都不行,可以在出问题的节点将本地表直接drop,等待所有阻塞ddl执行完毕后,重新创建1个空表,会自动从另一个副本中同步数据。
最后,19.x版本已经很旧了,我们在使用过程中遭遇了各种问题,要尽快升级到20.x系列
故障分析 | ClickHouse 集群分布式 DDL 被阻塞案例一则相关推荐
- Redlock——Redis集群分布式锁
欢迎关注方志朋的博客,回复"666"获面试宝典 前言 分布式锁是一种非常有用的技术手段.实现高效的分布式锁有三个属性需要考虑: 安全属性:互斥,不管什么时候,只有一个客户端持有锁 ...
- 如何做好Clickhouse集群的监控覆盖?
前言 常言道,兵马未至,粮草先行.在clickhouse上生产环境之前,我们就得制定好相关的监控方案,包括指标采集.报警策略.图形化监控大盘.有了全面有效的监控,我们就仿佛拥有了千里眼顺风耳,对于线上 ...
- clickhouse集群容器化搭建
本文将记录使用clickhouse镜像,分别在两种场景下搭建6节点集群(3分片2副本):1.在一台机器上使用容器方式安装clickhouse集群:2.在六台机器上使用容器方式安装clickhouse集 ...
- Docker搭建Clickhouse集群
Docker搭建Clickhouse集群 环境说明 2C 2G 30G hostname IP 操作系统 服务 localhost 192.168.88.171 CentOs 7.8 clickhou ...
- clickhouse集群部署方案分析
常见的三种集群架构方案 注:本文摘自网上内容,原文地址:https://zhuanlan.zhihu.com/p/161242274 ClickHouse分布式集群常见方案一:MergeTree + ...
- ElasticSearch的基本概念和集群分布式底层实现
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:张勇 http://tech.dianwoda.com/ 深 ...
- 集群,分布式,微服务的区别
参考文献: 集群,分布式,微服务概念和区别理解 谢谢作者分享!
- elasticsearch 删除满足条件的语句_ElasticSearch的基本概念和集群分布式底层实现
作者:张勇 http://tech.dianwoda.com/ 深度分页引发的机器性能问题 最近碰到一个ElasticSearch深度分页搜索,导致cpu占用过高问题,通过查阅ElasticSearc ...
- quartz集群分布式(并发)部署解决方案-Spring
项目中使用分布式并发部署定时任务,多台跨JVM,按照常理逻辑每个JVM的定时任务会各自运行,这样就会存在问题,多台分布式JVM机器的应用服务同时干活,一个是加重服务负担,另外一个是存在严重的逻辑问题, ...
最新文章
- CRM WEB UI 04明细界面添加按钮
- SQL_Server2008数据连接池
- 如何在Kali Linux中安装Google Chrome浏览器
- redis一般缓存什么样数据_SpringBoot+Redis轻松实现数据缓存
- 使用LBP+SVM,训练识别给定的测试图像
- PyTorch 1.0 中文文档:torch.utils.checkpoint
- 7价 半导体掺杂_模电总结第一章:常用半导体器件
- AngularJs学习笔记--directive
- access与sqlserver数据转换
- 脚本都不写,不能算正式测试
- 基于OpenGL的贪吃蛇游戏设计与实现
- 如何在桌面添加计算机日历工具,Win7电脑在桌面添加时钟、日历、货币、天气、CPU仪表盘小工具方法...
- 《统计学》第八版贾俊平第五章概率与概率分布
- php毕设周记,毕设周记录如何写的
- 使用oracle.jdbc.OracleDriver
- 非本小伙花了两年从小公司到蚂蚁金服,面试经验分享
- 2012年9月TIOBE编程社区指数
- 华为OD机试 - 找数字、找等值元素(Java JS Python)
- shell中for循环,读取一整行
- GPU和CPU的区别