网站建设 东阿阿胶,网络页面设计公司,中原彼得堡航空学院网站的建设,小红书推广营销文章目录 一、分布式ddl 阻塞、超时现象验证方法解决方案 二、副本同步阻塞现象验证解决方案 一、分布式ddl 阻塞、超时
现象
在clickhouse 集群的操作中#xff0c;如果同时执行一些重量级变更语句#xff0c;往往会引起阻塞。 一般是由于节点堆积过多耗时的ddl。然后抛出… 文章目录 一、分布式ddl 阻塞、超时现象验证方法解决方案 二、副本同步阻塞现象验证解决方案 一、分布式ddl 阻塞、超时
现象
在clickhouse 集群的操作中如果同时执行一些重量级变更语句往往会引起阻塞。 一般是由于节点堆积过多耗时的ddl。然后抛出如下异常
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表改更较重操作一般会在这个表记录。
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。
KILL MUTATION on cluster default_cluster WHERE database default AND table table; 二、副本同步阻塞
现象
写入副本表后查询数据量不一致或是很长时间才能一致。例如原表8968w 写入sql都已经执行完成查询只有6629w。集群没有阻塞时会直接查询到全量数据。
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 表的数量如果记录很多说明正在同步的任务多数据达到一致的延迟大。
-- 查询同步队列数
SELECT count() FROM system.replication_queue;
-- 查询同步表详情
SELECT * FROM system.replication_queue LIMIT 1 FORMAT Vertical;解决方案
首先确认同步队列中的表是否正常业务需要的集群的io是否正常。 如果确实有大量的写入业务就需要调整副本并行的线程大小replicated_max_parallel_fetches_for_host 如果发现大量没用/测试 的表在同步可删除这也是快速解决问题的方案。