ClickHouse集群获取节点系统设置值异常问题求助
问题原因
enable_analyzer属于查询/会话级可修改设置,当使用clusterAllReplicas分发查询时,ClickHouse会默认将发起节点的当前会话设置传递给所有远程节点。这导致远程节点执行查询时,会用发起节点的enable_analyzer值覆盖自身的配置,最终返回的都是发起节点的设置值,而非节点本身的真实配置。
而max_threads等设置看起来正常,大概率是因为你在发起节点的会话中没有修改过这些值,远程节点返回的是自身的默认/配置值,和发起节点的会话值一致,所以没暴露问题。
解决方法
有两种可靠的方式获取各节点的真实设置:
方法1:查询配置文件中的固定值(推荐)
直接查询system.settings表的config_value列,该列存储的是节点从配置文件中加载的设置值,不会被会话传递的临时设置覆盖:
select hostName(), config_value from clusterAllReplicas('cluster_ab', system.settings) where name = 'enable_analyzer'
方法2:禁用会话设置传递
在查询末尾添加SETTINGS send_settings_to_remote=0,阻止发起节点的会话设置传递到远程节点,让远程节点使用自身的会话默认设置执行查询:
select hostName(), value from clusterAllReplicas('cluster_ab', system.settings) where name = 'enable_analyzer' SETTINGS send_settings_to_remote=0
注意:如果节点的enable_analyzer是通过会话临时修改的(而非配置文件),方法2能获取到该节点当前会话的真实值;方法1则只能获取配置文件中的固定值,可根据需求选择。
内容的提问来源于stack exchange,提问作者Dmitry Grekov
相关产品推荐
相关产品推荐

