TiProxy 配置文件

本文档介绍了与 TiProxy 部署和使用相关的配置参数。以下是一个配置示例:

[proxy] addr = "0.0.0.0:6000" max-connections = 100 [api] addr = "0.0.0.0:3080" [log] level = "info" [security] [security.cluster-tls] skip-ca = true [security.sql-tls] skip-ca = true

配置 tiproxy.toml 文件

本小节介绍了 TiProxy 的配置参数。

proxy

SQL 端口的配置。

addr

  • 默认值:0.0.0.0:6000
  • 支持热加载:否
  • SQL 网关地址。格式为 <ip>:<port>

graceful-wait-before-shutdown

  • 默认值:0
  • 支持热加载:是
  • 单位:秒
  • 在 TiProxy 关闭时,在 graceful-wait-before-shutdown 秒内,HTTP 状态返回不健康,但 SQL 端口仍接受新连接。graceful-wait-before-shutdown 秒之后 SQL 端口将拒绝新连接并关闭现有连接。如果客户端和 TiProxy 之间没有其他代理(例如 NLB),建议将这个配置的值设置为 0

graceful-close-conn-timeout

  • 默认值:15
  • 支持热加载:是
  • 单位:秒
  • 在 TiProxy 关闭前,最多等待 graceful-close-conn-timeout 秒,连接的当前事务完成后将关闭连接。超时之后 TiProxy 将强制关闭所有连接。graceful-close-conn-timeout 发生在 graceful-wait-before-shutdown 之后。建议将此超时时间设置为长于事务的生命周期。

max-connections

  • 默认值:0
  • 支持热加载:是
  • 每个 TiProxy 实例最多可以接受 max-connections 个连接。0 表示没有限制。

conn-buffer-size

  • 默认值:32768
  • 支持热加载:是,但只对新连接有效
  • 单位:字节
  • 取值范围:[1024, 16777216]
  • 每个连接的缓冲区大小,读和写分别使用一个缓冲区。它是内存空间和性能之间的平衡,较大的缓冲区可能会有更高的性能,但占用更多内存。当值为 0 时,TiProxy 会使用默认大小的缓冲区。

pd-addrs

  • 默认值:127.0.0.1:2379
  • 支持热加载:否
  • TiProxy 连接的 PD 地址。TiProxy 通过从 PD 获取 TiDB 列表来发现 TiDB 实例。如果使用 TiUP 或 TiDB Operator 部署 TiProxy,则会自动设置此项。

proxy-protocol

  • 默认值:``
  • 支持热加载:是,但只对新连接有效
  • 可选值:`, v2`
  • 在 SQL 端口启用 PROXY 协议。开启 PROXY 协议后能让 TiProxy 透传客户端真实的 IP 地址给 TiDB。v2 代表使用 PROXY 协议 v2 版本,`` 代表不使用 PROXY 协议。在 TiProxy 启用 PROXY 协议后,需要同时在 TiDB 服务器上启用 PROXY 协议

api

HTTP 网关的配置。

addr

  • 默认值:0.0.0.0:3080
  • 支持热加载:否
  • API 网关地址。格式为 <ip>:<port>

proxy-protocol

  • 默认值:``
  • 支持热加载:否
  • 可选值:`, v2`
  • 在端口启用 PROXY 协议v2 代表使用 PROXY 协议 v2 版本,`` 代表不使用 PROXY 协议。

log

level

  • 默认值:info
  • 支持热加载:是
  • 可选值:debug, info, warn, error, panic
  • 指定日志的级别。当指定 panic 级别时,TiProxy 遇到错误时会 panic。

encoder

  • 默认值:tidb

  • 可选值:

    • tidb:TiDB 使用的格式。有关详细信息,请参见 统一日志格式
    • json:结构化 JSON 格式。
    • console:易读的日志格式。

log.log-file

filename

  • 默认值:``
  • 支持热加载:是
  • 日志文件路径。非空值将启用日志记录到文件。使用 TiUP 部署时会自动设置文件路径。

max-size

  • 默认值:300
  • 支持热加载:是
  • 单位:MB
  • 日志文件的最大大小。超过该大小后,日志将被轮转。

max-days

  • 默认值:3
  • 支持热加载:是
  • 指定保留旧日志文件的最大天数。超过此期限后,将删除过时的日志文件。

max-backups

  • 默认值:3
  • 支持热加载:是
  • 指定要保留的日志文件的最大数量。当超过此数量时,将自动删除多余的日志文件。

security

[security] 部分有四个名称不同的 TLS 对象,它们共享相同的配置格式和字段,但是不同名称对象的字段解释可能不同。

[security] [sql-tls] skip-ca = true [server-tls] auto-certs = true

所有 TLS 选项都支持热加载。

TLS 对象字段:

  • ca:指定 CA
  • cert:指定证书
  • key:指定私钥
  • auto-certs:主要用于测试。如果没有指定证书或密钥,则会生成证书。
  • skip-ca:在客户端对象上跳过使用 CA 验证证书,或在服务器对象上跳过服务器端验证。
  • min-tls-version:设置最低 TLS 版本。可选值:1.01.11.21.3。默认为 1.2,代表支持 TLSv1.2 及以上版本。
  • rsa-key-size:启用 auto-certs 时设置 RSA 密钥大小。
  • autocert-expire-duration:设置自动生成证书的默认到期时间。

对象根据名称被分类为客户端或服务器对象。

对客户端 TLS 对象:

  • 必须设置 caskip-ca 来跳过验证服务器证书。
  • 可选:可以设置 certkey 来通过服务器端客户端验证。
  • 无用字段:auto-certs

对服务器 TLS 对象:

  • 设置 certkeyauto-certs 后支持 TLS 连接,否则不支持 TLS 连接。
  • 可选:如果 ca 不为空,则启用服务器端的客户端验证。客户端必须提供证书。如果 skip-catrueca 不为空,则服务器仅在客户端提供证书时才验证客户端证书。

cluster-tls

客户端 TLS 对象。用于访问 TiDB 或 PD。

require-backend-tls

  • 默认值:false
  • 支持热加载:是,但只对新连接有效
  • 要求 TiProxy 和 TiDB 服务器之间使用 TLS 连接。如果 TiDB 服务器不支持 TLS,则客户端在连接到 TiProxy 时会报错。

sql-tls

客户端 TLS 对象。用于访问 TiDB SQL 端口(4000)。

server-tls

服务器 TLS 对象。用于在 SQL 端口(6000)上提供 TLS。

server-http-tls

服务器 TLS 对象。用于在 HTTP 状态端口(3080)上提供 TLS。