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, 如果发现大量没用/测试 的表在同步,可删除,这也是快速解决问题的方案。

相关推荐
曹弘毅10 小时前
doris/clickhouse常用sql
数据库·sql·clickhouse·doris
晴天彩虹雨13 小时前
实时数仓体系概览与架构演进
数据仓库·clickhouse·架构·flink·kafka
Hehuyi_In1 天前
阿里云Clickhouse 冷热数据分层存储 实战记录
clickhouse·oss·存储·归档·冷热分层
weisian1512 天前
中间件--ClickHouse-10--海量数据存储如何抉择ClickHouse和ES?
clickhouse·elasticsearch·中间件
D愿你归来仍是少年3 天前
Clickhouse 配置参考
大数据·clickhouse
weisian1514 天前
中间件--ClickHouse-14--案例-3-其他案例思路概述
clickhouse·中间件
wolfengi4 天前
clickhouse数据导出导入
数据库·clickhouse
南客先生4 天前
海量聊天数据处理:基于Spring Boot与SharingJDBC的分库分表策略及ClickHouse冷热数据分离
mysql·clickhouse·springboot·分库分表·大数据处理·sharingjdbc