clickhouse(十四、分布式DDL阻塞及同步阻塞问题)

文章目录

一、分布式ddl 阻塞、超时

现象

在clickhouse 集群的操作中,如果同时执行一些重量级变更语句,往往会引起阻塞。 一般是由于节点堆积过多耗时的ddl。然后抛出如下异常

bash 复制代码
ru.yandex.clickhouse.except.ClickHouseException: ClickHouse exception, code: 159, host: 127.0.0.1, port: 8123; Code: 159, e.displayText() = 
DB::Exception: Watching task /clickhouse/task_queue/ddl/query-0000000318 is executing longer than distributed_ddl_task_timeout (=180) seconds. 

验证方法

1.查询zookeeper的队列数,节点完成情况。

2.查询mutations表,改更较重操作一般会在这个表记录。

bash 复制代码
select FQDN() as node,
    database,
    table,
    mutation_id,
    create_time,
    command,
    is_done,
    parts_to_do
FROM clusterAllReplicas('default_cluster', system.mutations)
WHERE is_done = 0;

解决方案

先看能不能是kill MUTATION ,确定一下是不是所有节点里都KILL了,如果所有节点都确定KILL了这个队列还堵在那就只能删ZK。

bash 复制代码
KILL MUTATION on cluster default_cluster  WHERE database = 'default' AND table = 'table'; 

二、副本同步阻塞

现象

写入副本表后,查询数据量不一致或是很长时间才能一致。例如原表8968w, 写入sql都已经执行完成,查询只有6629w。集群没有阻塞时会直接查询到全量数据。

bash 复制代码
CREATE TABLE tmp.dwm_we_search_query_ad_data_v5_copy_20230815_local ( 
 `f000_date` Nullable(Date),
 `row_key` Int64,
 `day_` Nullable(String),
 `hour_` Nullable(String),
 `position_id` String,
 `query` String,
 `aid` Int64,
 `advertiser_id` String,
 `query_classify_res` Nullable(Int64),
 `imp_fail_cnt` Nullable(Int64),
 `imp_pv` Nullable(Int64)
 ) 
ENGINE = ReplicatedReplacingMergeTree('/clickhouse/default_cluster/tables/{shard}/tmp/dwm_we_search_query_ad_data_v5_copy_20230815_local', '{replica}') 
PARTITION BY ds_ 
ORDER BY (ds_, position_id,query,aid,advertiser_id,row_key) 
SETTINGS index_granularity = 8192

验证

查询 system.replication_queue 表的数量,如果记录很多,说明正在同步的任务多,数据达到一致的延迟大。

bash 复制代码
-- 查询同步队列数
SELECT count() FROM system.replication_queue;
-- 查询同步表详情
SELECT * FROM system.replication_queue LIMIT 1 FORMAT Vertical;

解决方案

首先确认同步队列中的表是否正常业务需要的,集群的io是否正常。 如果确实有大量的写入业务,就需要调整副本并行的线程大小replicated_max_parallel_fetches_for_host, 如果发现大量没用/测试 的表在同步,可删除,这也是快速解决问题的方案。

相关推荐
天道有情战天下1 天前
ClickHouse使用Docker部署
clickhouse·docker·容器
冷雨夜中漫步3 天前
ClickHouse常见问题——ClickHouseKeeper配置listen_host后不生效
java·数据库·clickhouse
qq_339191143 天前
docker 启动一个clickhouse , docker 创建ck数据库
clickhouse·docker·容器
宁小法3 天前
lua脚本在redis中执行是否是原子性?
redis·lua·阻塞·原子性·回滚
Kookoos5 天前
ABP + ClickHouse 实时 OLAP:物化视图与写入聚合
clickhouse·c#·linq·abp vnext·实时olap
喂完待续6 天前
【Big Data】AI赋能的ClickHouse 2.0:从JIT编译到LLM查询优化,下一代OLAP引擎进化路径
大数据·数据库·clickhouse·数据分析·olap·big data·序列晋升
阿里云大数据AI技术14 天前
鹰角网络基于阿里云 EMR Serverless StarRocks 的实时分析工程实践
starrocks·clickhouse·阿里云·emr·实时分析
更深兼春远17 天前
flink+clinkhouse安装部署
大数据·clickhouse·flink
Sais_Z20 天前
ClickHouse的学习与了解
数据库·clickhouse
风中凌乱23 天前
ClickHouse-Backup的安装与部署
clickhouse