配置 GreptimeDB
GreptimeDB 提供了层次化的配置能力,按照下列优先顺序来生效配置:
- 命令行参数
- 配置文件
- 环境变量
- 默认值
本文介绍了配置 GreptimeDB server 的方法,用户可以在 TOML 文件中进行设置。
在配置文件中,对于缺失的参数,系统会赋予其一个默认值。
所有样本配置文件都放在项目的 config 文件夹中。
命令行选项
请阅读命令行工具学习如何使用 greptime
命令行工具。
全局选项
-h
/--help
: 打印命令行帮助信息-V
/--version
: 打印 GreptimeDB 版本信息--log-dir <LOG_DIR>
: 指定日志路径--log-level <LOG_LEVEL>
: 指定日志级别,如info
、debug
等。
datanode 子命令选项
通过执行下列命令来获取 datanode
子命令的帮助菜单:
greptime datanode start --help
-c
/--config-file
: 指定 datanode 启动的配置文件--data-home
: 数据库存储 home 目录--env-prefix <ENV_PREFIX>
: 配置的环境变量前缀,默认为GREPTIMEDB_DATANODE
;--http-addr <HTTP_ADDR>
: HTTP 服务地址--http-timeout <HTTP_TIMEOUT>
: HTTP 超时设置,单位秒--metasrv-addrs <METASRV_ADDR>
: Metasrv 服务器列表,用逗号或者空格隔开--node-id <NODE_ID>
: 节点 ID--rpc-addr <RPC_ADDR>
: gRPC 服务地址--rpc-hostname <RPC_HOSTNAME>
: 节点 hostname--wal-dir <WAL_DIR>
: WAL 日志目录;
所有的地址类选项都是 ip:port
形式的字符串。
metasrv 子命令选项
通过执行下列命令来获取 metasrv
子命令的帮助菜单:
greptime metasrv start --help
-c
/--config-file
: 指定metasrv
启动配置文件--enable-region-failover
: 是否启动 region 自动容灾,默认为false
不启用。--env-prefix <ENV_PREFIX>
: 配置的环境变量前缀,默认为GREPTIMEDB_METASRV
;--bind-addr <BIND_ADDR>
:服务监听地址,默认为127.0.0.1:3002
.--http-addr <HTTP_ADDR>
: HTTP 服务器地址--http-timeout <HTTP_TIMEOUT>
: HTTP 超时设置,单位秒--selector <SELECTOR>
: 参考 selector 类型;--server-addr <SERVER_ADDR>
: 提供给 frontend 和 datanode 的外部通讯服务器地址--store-addrs <STORE_ADDR>
: 逗号或空格分隔的键值存储服务器(默认为 etcd)地址,用于存储元数据;--use-memory-store
: 是否使用内存存储替代 etcd,仅用于测试
frontend 子命令选项
通过执行下列命令来获取 frontend
子命令的帮助菜单:
greptime frontend start --help
-c
/--config-file
: 指定frontend
启动配置文件--disable-dashboard
: 是否禁用 dashboard,默认为false
。--env-prefix <ENV_PREFIX>
: 配置的环境变量前缀,默认为GREPTIMEDB_FRONTEND
;--rpc-addr <RPC_ADDR>
: gRPC 服务地址--http-addr <HTTP_ADDR>
: HTTP 服务器地址--http-timeout <HTTP_TIMEOUT>
: HTTP 超时设置,单位秒--influxdb-enable
: 是否启用influxdb
HTTP 接口,默认为 true。--metasrv-addrs <METASRV_ADDR>
: Metasrv 地址列表,用逗号或者空格隔开--mysql-addr <MYSQL_ADDR>
: MySQL 服务地址--postgres-addr <POSTGRES_ADDR>
: Postgres 服务地址--tls-cert-path <TLS_CERT_PATH>
: TLS 公钥文件地址--tls-key-path <TLS_KEY_PATH>
: TLS 私钥文件地址--tls-mode <TLS_MODE>
: TLS 模式--user-provider <USER_PROVIDER>
: 参考 鉴权;
standalone 子命令选项
通过执行下列命令来获取 standalone
子命令的帮助菜单:
greptime standalone start --help
-c
/--config-file
: 指定standalone
启动配置文件--env-prefix <ENV_PREFIX>
: 配置的环境变量前缀,默认为GREPTIMEDB_STANDALONE
;--http-addr <HTTP_ADDR>
: HTTP 服务器地址--influxdb-enable
: 是否启用influxdb
HTTP 接口,默认为 true。--mysql-addr <MYSQL_ADDR>
: MySQL 服务地址--postgres-addr <POSTGRES_ADDR>
: Postgres 服务地址--rpc-addr <RPC_ADDR>
: gRPC 服务地址
配置文件
示例
各项配置根据其功能适用于一个或多个组件。本文 档只包含部分常用配置的示例。完整的配置说明可以在这个自动生成的文档中找到。
你可以在 GitHub 上找到每个组件的所有可用配置示例:
指定配置文件
用户可以通过使用命令行参数 -c [file_path]
指定配置文件。
greptime [standalone | frontend | datanode | metasrv] start -c config/standalone.example.toml
例如,启动 standalone 模式:
greptime standalone start -c standalone.example.toml
协议选项
协议选项适用于 frontend
和 standalone
子命令,它指定了协议服务器地址和其他协议相关的选项。
下面的示例配置包含了所有协议选项的默认值。
为了使数据库正常工作,配置中必须启用 HTTP 和 gRPC 协议,其他协议可选。
如果要禁用某些选项,比如禁用 OpenTSDB 协议,可以将 enable
参数设置为 false
。
[http]
addr = "127.0.0.1:4000"
timeout = "30s"
body_limit = "64MB"
[grpc]
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 请求超时时间,默认为 "30s" | |
body_limit | 字符串 | HTTP 最大体积大小,默认为 "64MB" | |
is_strict_mode | 布尔值 | 是否启用协议的严格校验模式,启用会轻微影响性能,默认为false | |
grpc | gRPC 服务器选项 | ||
addr | 字符串 | 服务器地址,默认为 "127.0.0.1:4001" | |
runtime_size | 整数 | 服务器工作线程数量,默认为 8 | |
mysql | MySQL 服务器选项 | ||
enable | 布尔值 | 是否启用 MySQL 协议,默认为 true | |
add | 字符串 | 服务器地址,默认为 "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 | 布尔值 | 是否在 Prometheus 远程写入中使用 Metric Engine,默认为 true | |
postgres | PostgresSQL 服务器选项 | ||
enable | 布尔值 | 是否启用 PostgresSQL 协议,默认为 true | |
addr | 字符串 | 服务器地址,默认为 "127.0.0.1:4003" | |
runtime_size | 整数 | 服务器工作线程数量,默认为 2 |
存储选项
存储
选项在 datanode
和 standalone
模式下有效,它指定了数据 库数据目录和其他存储相关的选项。
GreptimeDB 支持将数据保存在本地文件系统, AWS S3 以及其兼容服务(比如 MinIO、digitalocean space、腾讯 COS、百度对象存储(BOS)等),Azure Blob Storage 和阿里云 OSS。
选项 | 键 | 类型 | 描述 |
---|---|---|---|
storage | 存储选项 | ||
type | 字符串 | 存储类型,支持 "File","S3" 和 "Oss" 等. | |
File | 本地文件存储选项,当 type="File" 时有效 | ||
data_home | 字符串 | 数据库存储根目录,默认为 "/tmp/greptimedb" | |
S3 | AWS S3 存储选项,当 type="S3" 时有效 | ||
bucket | 字符串 | S3 桶名称 | |
root | 字符串 | S3 桶中的根路径 | |
endpoint | 字符串 | S3 的 API 端点 | |
region | 字符串 | S3 区域 | |
access_key_id | 字符串 | S3 访问密钥 id | |
secret_access_key | 字符串 | S3 秘密访问密钥 | |
Oss | 阿里云 OSS 存储选项,当 type="Oss" 时有效 | ||
bucket | 字符串 | OSS 桶名称 | |
root | 字符串 | OSS 桶中的根路径 | |
endpoint | 字符串 | OSS 的 API 端点 | |
access_key_id | 字符串 | OSS 访问密钥 id | |
secret_access_key | 字符串 | OSS 秘密访问密钥 | |
Azblob | Azure Blob 存储选项,当 type="Azblob" 时有效 | ||
container | 字符串 | 容器名称 | |
root | 字符串 | 容器中的根路径 | |
endpoint | 字符串 | Azure Blob 存储的 API 端点 | |
account_name | 字符串 | Azure Blob 存储的账户名 | |
account_key | 字符串 | 访问密钥 | |
sas_token | 字符串 | 共享访问签名 | |
Gsc | Google Cloud Storage 存储选项,当 type="Gsc" 时有效 | ||
root | 字符串 | Gsc 桶中的根路径 | |
bucket | 字符串 | Gsc 桶名称 | |
scope | 字符串 | Gsc 权限 | |
credential_path | 字符串 | Gsc 访问证书 | |
endpoint | 字符串 | GSC 的 API 端点 |
文件存储配置范例:
[storage]
type = "File"
data_home = "/tmp/greptimedb/"
s3 配置范例:
[storage]
type = "S3"
bucket = "test_greptimedb"
root = "/greptimedb"
access_key_id = "<access key id>"
secret_access_key = "<secret access key>"