配置 GreptimeDB
GreptimeDB 提供了层次化的配置能力,按照下列优先顺序来生效配置(每个项目都会覆盖下面的项目):
- Greptime 命令行选项
- 配置文件选项
- 环境变量
- 默认值
你只需要设置所需的配置项。 GreptimeDB 将为未配置的任何设置分配默认值。
如何设置配置项
Greptime 命令行选项
你可以使用命令行参数指定多个配置项。 例如,以配置的 HTTP 地址启动 GreptimeDB 的独立模式:
greptime standalone start --http-addr 127.0.0.1:4000
有关 Greptime 命令行支持的所有选项,请参阅 GreptimeDB 命令行界面。
配置文件选项
你可以在 TOML 文件中指定配置项。
例如,创建一个名为 standalone.example.toml 的配置文件,如下所示:
[storage]
type = "File"
data_home = "./greptimedb_data/"
然后使用命令行参数 -c [file_path] 指定配置文件。
greptime [standalone | frontend | datanode | metasrv] start -c config/standalone.example.toml
例如以 standalone 模式启动 GreptimeDB:
greptime standalone start -c standalone.example.toml
示例文件
以下是每个 GreptimeDB 组件的示例配置文件,包括所有可用配置项。 在实际场景中,你只需要配置所需的选项,不需要像示例文件中那样配置所有选项。
Helm 配置
当使用 Helm 在 Kubernetes 上部署 GreptimeDB 时,你可以直接在 Helm values.yaml 文件中做相应的设置。
请参阅 Helm 配置项文档了解所有 Helm 支持的配置项。
对于仅在本篇文档中可用的配置项,你可以通过注入 TOML 配置文件来设置配置。
环境变量
配置文件中的每个项目都可以映射到环境变量。
例如,使用环境变量设置数据节点的 data_home 配置项:
# ...
[storage]
data_home = "/data/greptimedb"
# ...
使用以下 shell 命令以以下格式设置环境变量:
export GREPTIMEDB_DATANODE__STORAGE__DATA_HOME=/data/greptimedb
环境变量规则
-
每个环境变量应具有组件前缀,例如:
GREPTIMEDB_FRONTENDGREPTIMEDB_METASRVGREPTIMEDB_DATANODEGREPTIMEDB_STANDALONE
-
使用**双下划线
__**作为分隔符。例如,数据结构storage.data_home转换为STORAGE__DATA_HOME。
环境变量还接受以逗号 , 分隔的列表,例如:
GREPTIMEDB_METASRV__META_CLIENT__METASRV_ADDRS=127.0.0.1:3001,127.0.0.1:3002,127.0.0.1:3003
配置项
本节将介绍主要的配置项,请前往 GitHub 查看所有配置项。
写入内存限制选项
内存限制选项控制所有协议(HTTP、gRPC 和 Arrow Flight)并发写入请求使用的总内存。
这些选项适用于 frontend 和 standalone 子命令。
# 所有并发写入请求体和消息的最大总内存
# 设置为 0 表示禁用限制(默认为无限制)
max_in_flight_write_bytes = "1GB"
# 写入字节配额耗尽时的策略
# 可选值:`"wait"`(默认,10 秒超时)、`"wait(<duration>)"`(例如 `"wait(30s)"`)、`"fail"`
write_bytes_exhausted_policy = "wait"
| 配置项 | 类型 | 默认值 | 描述 |
|---|---|---|---|
max_in_flight_write_bytes | 字符串 | "0" | 所有并发写入请求体和消息(HTTP、gRPC、Flight)的最大总内存。设置为 "0" 表示禁用限制(无限制)。支持的单位:B、KB、MB、GB 等。示例:"1GB" 将并发写入总量限制为 1GB。 |
write_bytes_exhausted_policy | 字符串 | "wait" | 写入字节配额耗尽时的策略。可选值:"wait"(默认,等待最多 10 秒)、"wait(<duration>)"(自定义超时时间,例如 "wait(30s)")、"fail"(立即拒绝请求)。 |
协议选项
协议选项适用于 frontend 和 standalone 子命令,它指定了协议服务器地址和其他协议相关的选项。
HTTP 协议配置适用于所有 GreptimeDB 组件:frontend、datanode、flownode 和 metasrv。
下面的示例配置包含了所有协议选项的默认值。
你可以在配置文件中更改这些值或禁用某些协议。
例如禁用 OpenTSDB 协议支持,可以将 enable 参数设置为 false。
请注意,为了保障数据库的正常工作,无法禁用 HTTP 和 gRPC 协议。
[http]
addr = "127.0.0.1:4000"
timeout = "0s"
body_limit = "64MB"
[grpc]
bind_addr = "127.0.0.1:4001"
runtime_size = 8
[mysql]
enable = true
addr = "127.0.0.1:4002"
runtime_size = 2
[mysql.tls]
mode = "disable"
cert_path = ""
key_path = ""
[postgres]
enable = true
addr = "127.0.0.1:4003"
runtime_size = 2
[postgres.tls]
mode = "disable"
cert_path = ""
key_path = ""
[opentsdb]
enable = true
[influxdb]
enable = true
[prom_store]
enable = true
下表描述了每个选项的详细信息:
| 选项 | 键 | 类型 | 描述 |
|---|---|---|---|
| http | HTTP 服务器选项 | ||
| addr | 字符串 | 服务器地址,默认为 "127.0.0.1:4000" | |
| timeout | 字符串 | HTTP 请求超时时间。设为 "0s" 可禁用超时(默认值为 "0s")。 | |
| body_limit | 字符串 | HTTP 最大体积大小,默认为 "64MB" | |
| prom_validation_mode | 字符串 | 在 Prometheus Remote Write 协议中是否检查字符串是否为有效的 UTF-8 字符串。可用选项:strict(拒绝任何包含无效 UTF-8 字符串的请求),lossy(用 UTF-8 REPLACEMENT CHARACTER(即 � ) 替换无效字符),unchecked(不验证字符串有效性)。 | |
| grpc | gRPC 服务器选项 | ||
| bind_addr | 字符串 | gRPC 服务绑定地址,默认为 "127.0.0.1:4001" | |
| runtime_size | 整数 | 服务器工作线程数量,默认为 8 | |
| max_connection_age | 字符串 | gRPC 连接在服务端保持的最长时间。参见 "MAX_CONNECTION_AGE"。默认不设置。示例:"1h" 表示 1 小时,"30m" 表示 30 分钟 | |
| flight_compression | 字符串 | Frontend 的 Arrow IPC 服务的压缩模式。可用选项:none:禁用所有压缩,transport:仅启用 gRPC 传输压缩(zstd),arrow_ipc:仅启用 Arrow IPC 压缩(lz4),all:启用所有压缩。默认值为 none。 | |
| mysql | MySQL 服务器选项 | ||
| enable | 布尔值 | 是否启用 MySQL 协议,默认为 true | |
| addr | 字符串 | 服务器地址,默认为 "127.0.0.1:4002" | |
| runtime_size | 整数 | 服务器工作线程数量,默认为 2 | |
| influxdb | InfluxDB 协议选项 | ||
| enable | 布尔值 | 是否在 HTTP API 中启用 InfluxDB 协议,默认为 true | |
| opentsdb | OpenTSDB 协议选项 | ||
| enable | 布尔值 | 是否启用 OpenTSDB 协议,默认为 true | |
| prom_store | Prometheus 远程存储选项 | ||
| enable | 布尔值 | 是否在 HTTP API 中启用 Prometheus 远程读写,默认为 true | |
| with_metric_engine | 布尔值 |