abort_on_logical_error
allowed_disks_for_table_engines
auth_use_forwarded_address
由于转发地址很容易被伪造,因此使用此设置时应格外谨慎——接受此类身份验证的服务器不应允许直接访问,而应仅通过受信任的代理访问。
bcrypt_workfactor
bcrypt_password 身份验证类型的工作因子。
工作因子定义了计算哈希值并验证密码所需的计算量和时间。
blob_storage_log
blob_storage_log 系统表的相关设置。
以下设置可通过子标签配置:
此外,以下服务器级设置控制所有系统日志表的默认刷写策略:
示例:
builtin_dictionaries_reload_interval
cache_size_to_ram_max_ratio
cannot_allocate_thread_fault_injection_probability
cgroups_memory_usage_observer_wait_time
0。
压缩
如果您刚开始使用 ClickHouse,建议不要修改此项。
<case> 字段:
min_part_size– 数据分区片段的最小大小。min_part_size_ratio– 数据分区片段大小与表大小的比率。method– 压缩方法。可选值:lz4、lz4hc、zstd、deflate_qpl。level– 压缩级别。请参见编解码器。
你可以配置多个
<case> 部分。- 如果某个数据分区片段匹配某组条件,ClickHouse 会使用指定的压缩方法。
- 如果某个数据分区片段匹配多组条件,ClickHouse 会使用第一个匹配到的条件集。
如果某个数据分区片段不满足任何条件,ClickHouse 会使用
lz4 压缩。config_reload_interval_ms
配置文件
core_dump
硬限制需通过系统工具配置。
crash_log
默认的服务器配置文件
config.xml 包含以下设置部分:
database_atomic_delay_before_drop_table_sec
UNDROP 语句将其恢复。如果执行 DROP TABLE 时使用了 SYNC 修饰符,则会忽略此设置。
此设置的默认值为 480 (8 分钟) 。
dead_letter_queue
此外,以下服务器级设置控制所有系统日志表的默认刷写策略:
默认设置如下:
dictionary_background_reconnect_interval
background_reconnect 的失败 MySQL 和 Postgres 字典进行重连尝试的时间间隔,单位为毫秒。
disk_transaction_wait_for_blob_removal
wait_for_blob_removal 设置的默认值。
启用后,server 会在确认该操作前等待后台 blob 删除完成。
display_secrets_in_show_and_select
SHOW 与 SELECT 查询中显示敏感信息。
希望查看敏感信息的用户,还必须启用
format_display_secrets_in_show_and_select format 设置
,并拥有
displaySecretsInShowAndSelect 权限。
可能的值:
0— 禁用。1— 启用。
dns_max_consecutive_failures
dynamic_user_defined_executable_functions_path
CREATE FUNCTION ... ENGINE = DriverName(...)) 。
服务器重启时,会扫描该目录中的配置文件,并加载相应的 UDF,而无需再次调用驱动。
示例
加密
不建议将密钥存储在配置文件中,这样并不安全。你可以将密钥移到安全磁盘上的单独配置文件中,并在
config.d/ 目录下放置一个指向该配置文件的符号链接。current_key_id 用于设置当前的加密密钥,所有指定的密钥都可用于解密。
上述每种方法都可应用于多个密钥:
current_key_id 表示当前用于加密的密钥。
此外,用户还可以添加长度必须为 12 字节的 nonce (默认情况下,加密和解密过程使用的 nonce 由零字节组成) :
上述所有内容都适用于
aes_256_gcm_siv (但密钥长度必须为 32 字节) 。enforce_keeper_component_tracking
Coordination::setCurrentComponent 设置组件名称。如果缺少该组件,则会抛出 LOGICAL_ERROR 异常。
error_log
system.error_log,请使用以下内容创建 /etc/clickhouse-server/config.d/error_log.xml:
error_log 设置,请创建以下文件 /etc/clickhouse-server/config.d/disable_error_log.xml,其内容如下:
此外,以下服务器级设置控制所有系统日志表的默认刷写策略:
filesystem_caches_path
google_protos_path
handshake_timeout_milliseconds
hdfs.libhdfs3_conf
hsts_max_age
值为
0 表示 ClickHouse 禁用 HSTS。如果设置为正数,则会启用 HSTS,且 max-age 为你设置的数值。iceberg_background_schedule_pool_size
ignore_empty_sql_security_in_create_view_query
CREATE VIEW 查询中为留空的 SQL security 语句写入默认值。
此设置仅在迁移期间才需要,并将在 24.4 中弃用
include_from
insert_deduplication_version
new_unified_hash) ;如果存在此设置且值为任何其他值 (例如 old_separate_hashes 或 compatible_double_hashes) ,服务器将拒绝启动。升级前,请先在上一版本中运行 compatible_double_hashes 完成去重迁移 (该模式会同时写入旧版哈希和统一哈希) 。对于复制表,请至少运行 replicated_deduplication_window_seconds 对应的时长 (默认一小时) ;默认窗口会保留该窗口内所有 insert 的统一哈希,通常足以覆盖 insert 重试循环。对于 non_replicated_deduplication_window > 0 的非复制表,该窗口按计数而非按时间计算,因此升级前请至少运行 compatible_double_hashes 达到相同数量的 insert。
io_thread_pool_queue_size
值为
0 表示不受限制。keep_alive_timeout
ldap_servers
- 将其用作专用本地用户的身份验证器,这些用户指定的是
ldap身份验证机制而非password - 将其用作远程用户目录。
设置
user_dn_detection 可通过子标签进行配置:
示例:
日志记录器
日志格式说明符
log 和 errorLog 路径中的文件名支持以下格式说明符,用于生成结果文件名 (目录部分不支持这些说明符) 。
“Example”列显示的是 2023-07-06 18:32:07 时的输出。
示例
<syslog> 的键:
日志格式
你可以指定输出到控制台日志中的日志格式。目前仅支持 JSON。
示例
下面是一个输出 JSON 日志的示例:
<names> 标签内各项标签的值来更改键名。例如,要将 DATE_TIME 改为 MY_DATE_TIME,可以使用 <date_time>MY_DATE_TIME</date_time>。
省略 JSON 日志中的键
可以通过将相应属性注释掉来省略日志属性。例如,如果你不希望日志输出 query_id,可以将 <query_id> 标签注释掉。
logger.count
logger.errorlog
logger.formatting.type
<json>。
logger.level
<none> (关闭日志) 、<fatal>、<critical>、<error>、<warning>、<notice>、<information>、<debug>、<trace>、<test>。
logger.log
logger.rotation
logger.shutdown_level
logger.size
logger.startup_level
<level> 设置。
logger.stream_compress
<1> 或 <true> 以启用。
logger.syslog_level
logger.use_syslog
macros
message_queue_disable_insertion
metric_log
system.metric_log,请创建 /etc/clickhouse-server/config.d/metric_log.xml,内容如下:
metric_log 设置,请创建以下文件 /etc/clickhouse-server/config.d/disable_metric_log.xml,内容如下:
此外,以下服务器级设置控制所有系统日志表的默认刷写策略:
mmap_cache_size
system.metrics、system.metric_log中的MMappedFiles/MMappedFileBytes/MMapCacheCellssystem.events、system.processes、system.query_log、system.query_thread_log、system.query_views_log中的CreatedReadBufferMMap/CreatedReadBufferMMapFailed/MMappedFileCacheHits/MMappedFileCacheMisses
映射文件中的数据量不会直接占用内存,也不会计入查询或服务器的内存使用量,因为这部分内存可以像操作系统页缓存一样被丢弃。该缓存在 MergeTree 家族表中的旧 parts 被移除时会自动丢弃 (文件会被关闭) ,也可以通过
SYSTEM DROP MMAP CACHE 查询手动丢弃。此设置可在运行时修改,并会立即生效。mutation_workload
workload 设置值。该值可被 MergeTree 设置覆盖。
另请参见
oom_score
openSSL
libpoco 库提供了对 SSL 的支持。可用的配置选项说明见 SSLManager.h。默认值可在 SSLManager.cpp 中找到。
服务器/客户端设置项:
设置示例:
openSSL.client.caConfig
openSSL.client.cacheSessions
<sessionIdContext> 配合使用。可选值:<true>、<false>。
openSSL.client.certificateFile
<privateKeyFile> 中已包含该证书,则可省略此项。
openSSL.client.cipherList
openSSL.client.disableProtocols
openSSL.client.extendedVerification
openSSL.client.fips
openSSL.client.invalidCertificateHandler.name
<<invalidCertificateHandler> <name>RejectCertificateHandler</name> </invalidCertificateHandler>>。
openSSL.client.loadDefaultCAFile
</etc/ssl/cert.pem> (相应地,也可能位于目录 </etc/ssl/certs>) 中,或者位于环境变量 <SSL_CERT_FILE> (相应地,<SSL_CERT_DIR>) 指定的文件 (或目录) 中。
openSSL.client.preferServerCiphers
openSSL.client.privateKeyFile
openSSL.client.privateKeyPassphraseHandler.name
<<privateKeyPassphraseHandler>>, <<name>KeyFileHandler</name>>, <<options><password>test</password></options>>, <</privateKeyPassphraseHandler>>
openSSL.client.verificationDepth
openSSL.client.verificationMode
<none>、<relaxed>、<strict>、<once>。
openSSL.server.caConfig
openSSL.server.cacheSessions
<sessionIdContext> 配合使用。可接受值:<true>、<false>。
openSSL.server.certificateFile
<privateKeyFile> 中包含该证书,则可省略此项。
openSSL.server.cipherList
openSSL.server.disableProtocols
openSSL.server.extendedVerification
openSSL.server.fips
openSSL.server.invalidCertificateHandler.name
<<invalidCertificateHandler> <name>RejectCertificateHandler</name> </invalidCertificateHandler>>。
openSSL.server.loadDefaultCAFile
</etc/ssl/cert.pem> (或目录 </etc/ssl/certs>) 中,或者位于由环境变量 <SSL_CERT_FILE> (或 <SSL_CERT_DIR>) 指定的文件 (或目录) 中。
openSSL.server.preferServerCiphers
openSSL.server.privateKeyFile
openSSL.server.privateKeyPassphraseHandler.name
<<privateKeyPassphraseHandler>>, <<name>KeyFileHandler</name>>, <<options><password>test</password></options>>, <</privateKeyPassphraseHandler>>
openSSL.server.sessionCacheSize
openSSL.server.sessionIdContext
<SSL_MAX_SSL_SESSION_ID_LENGTH>。始终建议设置此参数,因为无论是服务器缓存了会话,还是客户端请求了缓存,它都有助于避免出现问题。
openSSL.server.sessionTimeout
openSSL.server.verificationDepth
openSSL.server.verificationMode
<none>、<relaxed>、<strict>、<once>。
opentelemetry_span_log
opentelemetry_span_log 系统表的设置。
以下设置可通过子标签配置:
此外,以下服务器级设置控制所有系统日志表的默认刷写策略:
示例:
part_log
table 参数配置该表的名称 (见下文) 。
以下设置可通过子标签配置:
此外,以下服务器级设置控制所有系统日志表的默认刷写策略:
示例
path
末尾的斜杠必不可少。
per_cpu_untracked_memory_thread_buffer
max_per_cpu_untracked_memory * number_of_cpus 之上。值为 0 时会移除这部分余量:每次 allocation 都会更新共享的每 CPU 计数器 (精度最高,但 contention 也更高) 。仅限 Linux。
point_in_polygon_cache_size
pointInPolygon 在使用常量 Polygon 参数时,其预处理多边形缓存的最大大小 (以字节为单位) 。
超过此限制的条目会按照最近最少使用顺序被逐出。
将其设置为 0 会禁用缓存:所有已缓存的多边形都会被逐出,之后的每个查询都会重新预处理其常量多边形。
也可以在不更改此限制的情况下,使用 SYSTEM DROP POINT IN POLYGON CACHE 查询手动清除此缓存。
此设置可在运行时修改,并会立即生效。
prefixes_deserialization_thread_pool_thread_pool_queue_size
值为
0 表示无限制。prepare_system_log_tables_on_startup
system.*_log 表。如果某些启动脚本依赖这些表,此设置会很有帮助。
process_query_plan_packet
processors_profile_log
processors_profile_log 系统表的相关设置。
以下设置可通过子标签配置:
此外,以下服务器级设置控制所有系统日志表的默认刷写策略:
默认设置如下:
prometheus
endpoint– prometheus server 用于抓取指标的 HTTP 端点。以 ’/’ 开头。port–endpoint的端口。metrics– 暴露来自 system.metrics 表的指标。events– 暴露来自 system.events 表的指标。asynchronous_metrics– 暴露来自 system.asynchronous_metrics 表的当前指标值。errors- 暴露自上次服务器重启以来按错误代码统计的错误数量。此信息也可从 system.errors 获取。
127.0.0.1 替换为 ClickHouse 服务器的 IP 地址或主机名) :
prometheus.keeper_metrics_only
代理
- 环境变量
- 代理列表
- 远程代理解析器。
no_proxy 让特定 host 绕过代理服务器。
环境变量
http_proxy 和 https_proxy 环境变量允许你为指定协议设置代理服务器。如果你已在系统中设置了它们,通常即可直接生效。
如果某种协议只有一个代理服务器,并且该代理服务器不会变化,
这是最简单的方法。
代理列表
这种方法允许你为某种协议指定一个或多个
代理服务器。如果定义了多个代理服务器,
ClickHouse 会以轮询方式使用不同的代理,
将负载分散到各个服务器上。如果某种协议有多个
代理服务器,并且代理服务器列表不会变化,
这是最简单的方法。
配置模板
- <proxy>
- <http> 和 <https>
\{proxy_scheme\}://\{proxy_host\}:{proxy_port}
配置模板
- <proxy>
- <http> 和 <https>
- <resolver>
ClickHouse 会检查与请求协议对应的最高优先级解析器类型。如果未定义,
则会继续检查优先级次高的解析器类型,直到环境解析器为止。
这也意味着可以混合使用多种解析器类型。
remap_executable
此功能仍处于高度 Experimental 状态。
replica_group_name
replicated_merge_tree
restore_threads
send_crash_reports
推荐用法
series_keeper_path
generateSerialID 函数生成的自增编号。每个序列都会成为该路径下的一个节点。
ssh_server
table_engines_require_grant
GRANT TABLE ENGINE ON TinyLog to user。
默认情况下,出于向后兼容考虑,使用特定表引擎创建表时会忽略该权限;不过,你可以将此项设置为 true 来更改这一行为。
tcp_ssh_port
text_log
此外,以下服务器级设置控制所有系统日志表的默认刷写策略:
此外:
示例
thread_pool_queue_size
max_thread_pool_size 相同。
值为
0 表示不受限制。throw_on_unknown_workload
- 如果为
true,尝试访问未知 workload 的查询会抛出 RESOURCE_ACCESS_DENIED 异常。这在 WORKLOAD 层级结构建立完成且包含 WORKLOAD default 后,可用于对所有查询强制实施资源调度。 - 如果为
false(默认值) ,对于 ‘workload’ 设置指向未知 WORKLOAD 的查询,将提供不受限制且不进行资源调度的访问。这在 WORKLOAD default 添加之前、配置 WORKLOAD 层级结构期间非常重要。
时区
trace_log
此外,以下服务器级设置控制所有系统日志表的默认刷写策略:
默认服务器配置文件
config.xml 包含以下设置部分:
url_scheme_mappers
validate_tcp_client_information
false:
wait_dictionaries_load_at_startup
dictionaries_lazy_load 为 false 时的行为。
(如果 dictionaries_lazy_load 为 true,则此设置不起任何作用。)
如果 wait_dictionaries_load_at_startup 为 false,则 server
会在启动时开始加载所有字典,并在加载过程中并行接收 connections。
当某个字典首次在查询中使用时,如果该字典尚未加载完成,则该查询会一直等待,直到字典加载完成。
将 wait_dictionaries_load_at_startup 设置为 false 可以让 ClickHouse 启动得更快,但某些查询的执行速度可能会变慢
(因为它们需要等待某些字典加载完成) 。
如果 wait_dictionaries_load_at_startup 为 true,则 server 会在启动时等待,
直到所有字典都完成加载 (无论成功与否) 后,才接收任何 connections。
示例
webassembly_udf_engine
webterminal_allowed_origins
/webterminal WebSocket 会话的完整来源 (scheme + host + 可选 port) 列表,多个值以逗号分隔。为空时,将严格执行同源策略 (Origin 必须与请求的 scheme、host 和 port 匹配) 。如果部署位于执行 TLS 终止的反向代理之后,且浏览器使用的是 https,但 request.isSecure() 为 false,请设置此项。示例:https://example.com,https://app.example.com:8443。