clickhouse-配置解释

本文围绕ClickHouse展开,介绍了全局服务配置,包括interserver_http_credentials示例、zookeeper配置模版等,还阐述了query - level的变量配置,如多种配置和查询方法,包括创建用户时设置、通过配置文件指定等,具体配置可参考官方文档。

详细内容看官网文档

一、全局服务配置

1.配置详解

名称 含义 默认值
allow_use_jemalloc_memory 允许使用 jemalloc 内存 1(布尔)
asynchronous_heavy_metrics_update_period_s 更新异步指标的时间段(以秒为单位) 120
asynchronous_metrics_update_period_s 更新异步指标的时间段(以秒为单位) 1
background_buffer_flush_schedule_pool_size 将用于在后台对缓冲区引擎表执行刷新操作的最大线程数 16
background_common_pool_size 将用于在后台对 *MergeTree 引擎表执行各种操作(主要是垃圾回收)的最大线程数 8
background_distributed_schedule_pool_size 将用于执行分布式发送的最大线程数 16
background_fetches_pool_size 将用于从后台 *MergeTree 引擎表的另一个副本获取数据部分的最大线程数 8
background_merges_mutations_concurrency_ratio 设置线程数与可以同时执行的后台合并和突变数之间的比率。 例如,如果比率等于2并且background_pool_size设置为16,那么ClickHouse可以同时执行32个后台合并。 这是可能的,因为后台操作可以暂停和推迟。 这是为小型合并提供更多执行优先级所必需的。 您只能在运行时增加此比率。 要降低它,您必须重新启动服务器。 与background_pool_size设置相同的background_merges_mutations_concurrency_ratio可以从默认配置文件中应用以实现向后兼容性。 2(float)
background_merges_mutations_scheduling_policy 关于如何执行后台合并和突变调度的策略。 可能的值为:round_robin 和shortest_task_first

round_robin — 每个并发合并和变异都按循环顺序执行,以确保无饥饿操作。 较小的合并比较大的合并完成得更快,因为它们需要合并的块较少。

shortest_task_first — 始终执行较小的合并或突变。 合并和突变根据其结果大小分配优先级。 较小尺寸的合并优先于较大尺寸的合并。 此策略可确保以最快的速度合并小部分,但可能会导致 INSERT 严重过载的分区中的大合并无限期匮乏。
round_robin
background_message_broker_schedule_pool_size 将用于执行消息流的后台操作的最大线程数 16
background_move_pool_size 将用于将数据部分移动到后台 *MergeTree 引擎表的另一个磁盘或卷的最大线程数 8
background_pool_size 设置使用 MergeTree 引擎对表执行后台合并和突变的线程数。 您只能在运行时增加线程数。 要减少线程数,您必须重新启动服务器。 通过调整此设置,您可以管理 CPU 和磁盘负载。 较小的池大小使用较少的 CPU 和磁盘资源,但后台进程进展较慢,最终可能会影响查询性能。

在更改之前,还请查看相关的 MergeTree 设置,例如 number_of_free_entries_in_pool_to_lower_max_size_of_merge 和 number_of_free_entries_in_pool_to_execute_mutation。
16
background_schedule_pool_size 将用于不断对复制表、Kafka 流式处理和 DNS 缓存更新执行某些轻量级定期操作的最大线程数。 128
backup_threads 执行备份请求的最大线程数 16
backups_io_thread_pool_queue_size 备份 IO 线程池上可以调度的最大作业数。 由于当前的 S3 备份逻辑,建议保持此队列不受限制 (0)。 0
cache_size_to_ram_max_ratio 将缓存大小设置为 RAM 最大比率。允许降低低内存系统上的缓存大小 0.5
concurrent_threads_soft_limit_num 允许运行所有查询的最大查询处理线程数(不包括用于从远程服务器检索数据的线程)。 这不是硬性限制。 万一达到限制,查询仍将至少有一个线程运行。 如果有更多线程可用,查询可以在执行期间扩展到所需的线程数。 0
concurrent_threads_soft_limit_ratio_to_cores 与 concurrent_threads_soft_limit_num 相同,但具有与核心的比率。 0
default_database 默认数据库名称 default
disable_internal_dns_cache 禁用内部 DNS 缓存。 建议在基础设施经常变化的系统(例如 Kubernetes)中运行 ClickHouse。 0(布尔)
dns_cache_update_period 内部 DNS 缓存更新周期(以秒为单位) 15
dns_max_consecutive_failures 从 ClickHouse DNS 缓存中删除主机之前的最大连续解析失败次数 1024
index_mark_cache_size 索引标记的缓存大小。零表示禁用

此设置可以在运行时修改,并将立即生效。
0
index_uncompressed_cache_size 合并树索引的未压缩块的缓存大小。零表示禁用

此设置可以在运行时修改,并将立即生效
0
io_thread_pool_queue_size IO 线程池的队列大小。零表示无限制。 10000
mark_cache_policy 标记缓存策略名称 SLRU
mark_cache_size 标记的缓存大小(合并树系列表的索引)

此设置可以在运行时修改,并将立即生效
5368709120
max_backup_bandwidth_for_server 服务器上所有备份的最大读取速度(以字节/秒为单位)。零表示无限制 0
max_backups_io_thread_pool_free_size 如果Backups IO Thread池中的空闲线程数量超过max_backup_io_thread_pool_free_size,ClickHouse将释放空闲线程占用的资源并减小池大小。 如果需要,可以再次创建线程。 0
max_backups_io_thread_pool_size 用于备份查询的 IO 操作的最大线程数 1000
max_concurrent_queries 并发执行查询总数的限制。 零意味着无限。 请注意,还必须考虑对插入和选择查询以及用户最大查询数的限制。 另请参见 max_concurrent_insert_queries、max_concurrent_select_queries、max_concurrent_queries_for_all_users。 零意味着无限。

此设置可以在运行时修改,并将立即生效。已在运行的查询将保持不变。
0
max_concurrent_insert_queries 并发插入查询总数的限制。零表示无限制

此设置可以在运行时修改,并将立即生效。已在运行的查询将保持不变
0
max_concurrent_select_queries 限制并发选择查询的总数。零表示无限制。

此设置可以在运行时修改,并将立即生效。已在运行的查询将保持不变
0
max_connections 最大服务器连接数 1024
max_io_thread_pool_free_size IO 线程池的最大可用大小 0
max_io_thread_pool_size 将用于 IO 操作的最大线程数 100
max_local_read_bandwidth_for_server 本地读取的最大速度(以字节/秒为单位)。零表示无限制 0
max_local_write_bandwidth_for_server 本地写入的最大速度(以字节/秒为单位)。零表示无限制 0
max_partition_size_to_drop 限制删除分区。如果 MergeTree 表的大小超过 max_partition_size_to_drop (以字节为单位),则无法使用 DROP PARTITION 查询删除分区。 此设置不需要重新启动 Clickhouse 服务器即可应用。 禁用限制的另一种方法是创建 /flags/force_drop_table 文件。 值 0 表示您可以不受任何限制地删除分区。 50GB
max_remote_read_network_bandwidth_for_server 通过网络进行数据交换的最大速度,以字节/秒为单位进行读取。零表示无限制 0
max_remote_write_network_bandwidth_for_server 通过网络进行写入的数据交换的最大速度(以字节/秒为单位)。零表示无限制 0
max_server_memory_usage 总内存使用量限制。 零意味着无限。默认 max_server_memory_usage 值的计算方式为:memory_amount * max_server_memory_usage_to_ram_ratio。 0
max_table_size_to_drop 删除表的大小限制 50GB
max_temporary_data_on_disk_size 可用于外部聚合、联接或排序的最大存储量。 超过此限制的查询将失败并出现异常。 零意味着无限。
另请参阅 max_temporary_data_on_disk_size_for_user 和 max_temporary_data_on_disk_size_for_query。
0
max_thread_pool_free_size 如果全局线程池中的空闲线程数大于 max_thread_pool_free_size,则 ClickHouse 会释放部分线程占用的资源,并减小池大小。 如果需要的话可以再次创建线程 1000
max_thread_pool_size 可以从操作系统分配并用于查询执行和后台操作的最大线程数 10000
mmap_cache_size 设置映射文件的缓存大小(以字节为单位)。 此设置可以避免频繁的打开/关闭调用(由于随之而来的页面错误,这非常昂贵),并可以重用来自多个线程和查询的映射。 设置值为映射区域的数量(通常等于映射文件的数量)。 可以使用 MMappedFiles 和 MMappedFileBytes 指标在表 system.metrics 和 system.metric_log 中监视映射文件中的数据量。 此外,在 system.asynchronous_metrics 和 system.asynchronous_metrics_log 中通过 MMapCacheCells 指标,在 system.events、system.processes、system.query_log、system.query_thread_log、system.query_views_log 中通过 CreatedReadBufferMMap、CreatedReadBufferMMapFailed、MMappedFileCacheHits、MMappedFileCacheMisses 事件。
请注意,映射文件中的数据量不会直接消耗内存,并且不会计入查询或服务器内存使用量中,因为该内存可以像操作系统页面缓存一样被丢弃。 在删除 MergeTree 系列表中的旧部分时,缓存会自动删除(文件被关闭),也可以通过 SYSTEM DROP MMAP CACHE 查询手动删除。

此设置可以在运行时修改
1000
restore_threads 执行还原请求的最大线程数 16
show_addresses_in_stack_traces 如果设置为 true,将在堆栈跟踪中显示地址 1(布尔)
shutdown_wait_unfinished_queries 如果设置为 true,ClickHouse 将等待运行查询完成,然后再关闭。 0(布尔)
temporary_data_in_cache 使用此选项,临时数据将存储在特定磁盘的缓存中。 在本节中,您应该指定具有类型缓存的磁盘名称。 在这种情况下,缓存和临时数据将共享相同的空间,并且可以逐出磁盘缓存以创建临时数据。
只能使用一个选项来配置临时数据存储:tmp_path、tmp_policy、temporary_data_in_cache。
thread_pool_queue_size 全局线程池上可以调度的最大作业数。 增加队列大小会导致更大的内存使用量。 建议将此值保持等于 max_thread_pool_size。 零意味着无限。 10000
tmp_policy 包含临时数据的存储策略
只能使用一个选项来配置临时数据存储:tmp_path、tmp_policy、temporary_data_in_cache。
move_factor、keep_free_space_bytes、max_data_part_size_bytes 和 被忽略。
策略应该只有一个带有本地磁盘的卷。
uncompressed_cache_policy 未压缩的缓存策略名称 SLRU
uncompressed_cache_size 合并树系列中的表引擎使用的未压缩数据的高速缓存大小(以字节为单位)。零表示禁用。服务器有一个共享缓存。内存按需分配。如果启用了选项 use_uncompressed_cache,则使用缓存。在个别情况下,未压缩的缓存对于非常短的查询是有利的。
此设置可以在运行时修改,并将立即生效
0
builtin_dictionaries_reload_interval 重新加载内置词典之前的间隔(以秒为单位)。ClickHouse每x秒重新加载一次内置词典。这样就可以“动态”编辑词典,而无需重新启动服务器 3600
compression 合并树引擎表的数据压缩设置,如果您刚刚开始使用ClickHouse,请不要使用它。
case内容如下:
min_part_size – 数据部分的最小大小。
min_part_size_ratio – 数据部分大小与表大小的比率。
method——压缩方法。 可接受的值:lz4、lz4hc、zstd、deflate_qpl。
level – 压缩级别。
encryption 配置命令以获取加密编解码器使用的密钥。 密钥(或多个密钥)应写入环境变量或在配置文件中设置。密钥可以是十六进制或长度等于 16 字节的字符串。
custom_settings_prefixes 自定义设置的前缀列表。前缀必须用逗号分隔。
core_dump 配置核心转储文件大小的软限制 1073741824 (1 GB)
database_atomic_delay_before_drop_table_sec
<think> 首先,用户的问题是关于ClickHouse服务的启动失败:"clickhouse-server.service启动失败,原因是服务未采取其单元配置所需步骤"。我需要提供解决方案。 参考用户提供的引用: - 引用[1]: 解释ClickHouse配置文件的路径和覆盖规则,包括config.xml在/etc/clickhouse-server/目录,以及如何在conf.d和config.d目录中使用*.xml和*.conf文件覆盖设置。还提到了replace或remove属性。 - 引用[2]: 成功启动后可以使用clickhouse-client连接。 - 引用[3]: 描述了如何用Docker运行clickhouse-client连接服务器。 - 引用[4]: 默认配置文件路径:/etc/clickhouse-server,包括config.xml(服务器配置)和users.xml(用户权限配置)。 - 引用[5]: 关于Sentry自定义警报消息的步骤,似乎无关,因为ClickHouse问题。 用户的问题聚焦于服务启动失败,具体错误是"服务未采取单元配置所需步骤"。这听起来像是systemd单元配置问题,因为提到了clickhouse-server.service。 在Linux系统中,clickhouse-server通常是通过systemd管理的服务。错误消息可能表示服务启动时没有正确执行单元配置所需的步骤。 常见原因和解决方案: 1. **配置文件错误**:如果config.xml或users.xml中有语法错误,服务可能会失败启动。需要检查配置文件。 2. **权限问题**:ClickHouse服务需要访问某些目录,如数据目录,权限设置不当会导致启动失败。 3. **端口冲突**:ClickHouse默认监听8123端口,如果被占用,服务无法启动。 4. **SELinux或AppArmor**:安全模块可能阻止服务启动。 5. **日志查看**:第一步应该是查看ClickHouse的日志文件,通常位于/var/log/clickhouse-server/目录下。 6. **systemd状态检查**:使用systemctl status clickhouse-server.service命令查看详细错误信息。 基于用户的引用,配置文件的路径和覆盖规则很重要。引用[1]中提到可以在/etc/clickhouse-server/conf.d和/etc/clickhouse-server/config.d目录中添加配置文件来覆盖设置。错误可能由这些文件引起的。 结构化回答: - 确认问题:服务启动失败,systemd报告单元配置问题。 - 逐步解决: 1. 查看日志:访问ClickHouse日志文件。 2. 检查配置文件:验证config.xml和users.xml的语法,确保没有错误;检查覆盖文件。 3. 检查权限:确保ClickHouse用户有权限访问必要目录。 4. 端口检查:确认端口没有被占用。 5. 重启服务:修复后重启。 - 结束语:鼓励验证解决。 生成相关问题:这是用户指示的一部分。系统级指令说"生成相关问题",在示例中,有"§§相关问题§§"部分。我需要添加相关问题。 引用标识:在回答中引用内容时,添加引用标识如[^1]。用户提供了引用[1]到[5],我应该基于这些引用相关内容。 用户说"上述引用仅供参考",但我应该参考用户上一次的问题和我的回答。这是首次交互,所以没有上一次回答。参考提供的引用即可。 用户真正的需求是解决ClickHouse服务启动失败的问题。引用[1],[2],[3],[4]相关;[5]似乎无关。 最终回答结构: 1. 引言:简要解释问题。 2. 解决方案步骤: - 步骤1: 查看日志 - 步骤2: 检查配置文件 - 步骤3: 检查权限和端口 - 步骤4: 重启服务 3. 相关问题:生成几个相关问题。 使用中文回答,确保清晰。 </think> ### ClickHouse 服务启动失败:服务未采取单元配置所需步骤的解决方案 您在遇到 `clickhouse-server.service` 启动失败的问题,错误信息提示“服务未采取单元配置所需步骤”。这通常是由于 systemd 服务单元配置问题或 ClickHouse 配置错误引起的。ClickHouse 服务依赖于配置文件(如 `config.xml` 和 `users.xml`),如果这些文件中有语法错误、路径不当或权限问题,服务可能无法正确初始化[^1][^4]。以下是逐步解决方案,帮助您诊断和修复问题。在执行操作前,请确保您有管理员权限(如使用 `sudo`)。 #### 步骤 1: 查看服务日志和状态 首先,检查 systemd 服务日志以获取具体错误详情。这将帮助您定位问题根源。 - 运行命令查看服务状态: ```bash sudo systemctl status clickhouse-server.service ``` 输出中通常会显示错误消息(如配置文件无效或权限拒绝)。如果提示“Failed to start ClickHouse server”,请记录关键错误。 - 检查 ClickHouse 专用日志文件: ```bash sudo tail -n 50 /var/log/clickhouse-server/clickhouse-server.log ``` 或者如果日志文件不存在: ```bash sudo journalctl -u clickhouse-server.service --since "5 minutes ago" ``` 日志可能显示配置文件加载失败、端口冲突或目录权限问题[^1][^4]。 #### 步骤 2: 验证配置文件语法和覆盖规则 配置文件错误是常见原因。ClickHouse配置文件位于 `/etc/clickhouse-server/` 目录: - `config.xml`:服务器核心配置(如端口、数据路径)。 - `users.xml`:用户权限配置- 覆盖文件:在 `/etc/clickhouse-server/conf.d` 或 `/etc/clickhouse-server/config.d` 目录中的 `*.xml` 或 `*.conf` 文件可以覆盖设置[^1]。 **操作步骤:** 1. **检查配置文件语法**: - 使用 XML 验证工具检测错误: ```bash xmllint --noout /etc/clickhouse-server/config.xml xmllint --noout /etc/clickhouse-server/users.xml ``` 如果出现错误(如 XML 标签不匹配),请修复文件。 - 确保配置文件没有无效参数。例如,在 `config.xml` 中检查 `<path>` 或 `<tmp_path>` 是否指向有效目录(默认 `/var/lib/clickhouse/`)。 2. **检查覆盖文件**: - 查看 `conf.d` 或 `config.d` 目录中的文件: ```bash ls -l /etc/clickhouse-server/conf.d/ ls -l /etc/clickhouse-server/config.d/ ``` - 如果存在覆盖文件(如 `custom_config.xml`),检查它们是否使用了 `replace` 或 `remove` 属性: - `replace`属性:用指定元素替换整个元素(例如 `<path replace="replace">/new/path</path>`)。 - `remove`属性:删除元素(例如 `<unused_setting remove="remove"/>`)。 - 如果未指定属性,配置会递归合并,可能导致冲突[^1]。 - 临时禁用覆盖文件测试: ```bash sudo mv /etc/clickhouse-server/conf.d/* /tmp/ # 移动文件到临时目录 sudo systemctl restart clickhouse-server.service ``` 如果服务启动成功,则问题是覆盖文件引起的;逐个恢复文件排查冲突。 #### 步骤 3: 检查权限、端口和依赖 - **权限问题**: - 确保 ClickHouse 用户(通常为 `clickhouse`)有权访问相关目录: ```bash sudo chown -R clickhouse:clickhouse /var/lib/clickhouse/ # 数据目录权限 sudo chown -R clickhouse:clickhouse /etc/clickhouse-server/ # 配置目录权限 sudo chmod 755 /var/lib/clickhouse/ ``` - 如果使用自定义路径(如数据存储在 `/data/clickhouse`),在 `config.xml` 中设置并确保权限正确。 - **端口冲突**: - ClickHouse 默认使用端口 8123(HTTP)和 9000(TCP)。检查端口是否被占用: ```bash sudo netstat -tuln | grep ':8123\|:9000' ``` 如果占用,修改 `config.xml` 中的 `<http_port>` 或 `<tcp_port>`,或停止冲突服务。 - **依赖和 SELinux/AppArmor**: - 确保依赖包安装完整(如运行 `sudo clickhouse install`)。 - 如果使用 SELinux 或 AppArmor,临时禁用测试: ```bash sudo setenforce 0 # 临时禁用 SELinux ``` 如果服务启动正常,则需调整安全策略。 #### 步骤 4: 重启服务并验证 修复后,重启服务并测试: ```bash sudo systemctl daemon-reload # 重新加载 systemd 配置 sudo systemctl restart clickhouse-server.service sudo systemctl status clickhouse-server.service # 检查状态 ``` 如果状态显示“active (running)”,则问题解决。尝试连接验证: ```bash clickhouse-client # 或使用 Docker 客户端[^3] ``` 如果仍有问题,回滚到默认配置(备份后删除自定义文件)或查看 ClickHouse 文档。 ### 相关问题
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值