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创建用户,登录出错的问题,code 516
linux·服务器·clickhouse
billy_gisboy2 天前
01-Windows+DockerDesktop部署ClickHouse
windows·clickhouse
billy_gisboy2 天前
02-Windows DockerDesktop部署ClickHouse,解决指定磁盘数据持久化问题与WSL2调优
windows·clickhouse
hkNaruto2 天前
【运维】低配服务器ClickHouse Docker部署故障复盘与优化配置指南
运维·服务器·clickhouse
有梦想有行动3 天前
ClickHouse的Partition和Part概念
linux·数据库·clickhouse
l1t3 天前
利用DeepSeek辅助翻译clickhouse SQL为DuckDB 格式求解Advent of Code 2025第10题 电子工厂 第二部分
数据库·人工智能·sql·clickhouse·duckdb
l1t3 天前
对clickhouse给出的二分法求解Advent of Code 2025第10题 电子工厂 第二部分的算法理解
数据库·算法·clickhouse
麦聪聊数据3 天前
基于SQL+CDC构建MySQL到ClickHouse的实时链路
sql·mysql·clickhouse
lhyzws6 天前
CENTOS上的网络安全工具(三十四) Portainer Kafka-Clickhouse部署(3) 连接kafka和clickhouse
clickhouse·kafka·centos
·云扬·7 天前
3台机器搭建ClickHouse环形复制集群实践
clickhouse