MySQL Router 8.4  /  ...  /  配置文件选项

4.3.3 配置文件选项

启动时,MySQL Router 会读取一系列配置文件,这些文件共同构成路由器的配置。至少需要一个配置文件。

MySQL Router 从配置文件中读取选项,这些文件与传统的 INI 文件格式非常相似,包含节和选项。这些文件指定了 MySQL Router 启动时设置的选项。有关文件语法的详细信息,请参阅第 4.1 节“配置文件语法”

选项在章节下定义,这些章节规定了选项的含义。例如,[DEFAULT] 节下的 user 指的是运行路由器的系统用户,而 [metadata_cache] 节下的 user 指的是访问元数据的 MySQL 用户。

下表按章节列出,并总结了 MySQL Router 配置文件中定义的 MySQL Router 选项。有关每个选项的详细信息,例如说明和允许的值,请参阅下表之后的文档。

常规选项

表 4.7 [DEFAULT]

选项名称 说明 类型
config_folder 配置文件路径 字符串
connect_timeout 连接到元数据服务器的尝试被视为超时的秒数 整数
core-file 在路由器崩溃时写入核心文件 布尔值
event_source_name 仅限 Microsoft Windows 平台。定义在 Microsoft Windows 上作为服务运行时 MySQL Router 使用的服务名称。 字符串
keyring_path 密钥环文件路径 字符串
logging_folder 路由器日志路径 字符串
master_key_path 主密钥环文件路径 字符串
master-key-reader 将主密钥返回到 STDOUT 的脚本 字符串
master-key-writer 从 STDIN 读取主密钥的脚本 字符串
max_total_connections 路由器允许的客户端连接总数上限 整数
pid_file 存储 PID 文件的位置 字符串
plugin_folder 路由器插件路径 字符串
runtime_folder 运行时文件路径 字符串
sinks 接收已配置日志数据的日志记录方法 字符串
thread_stack_size 分配给每个线程堆栈的内存大小(以 KB 为单位) 整数
unknown_config_option 遇到未知配置选项时发送的错误类型 字符串
user 运行 MySQL Router 的系统用户 字符串

路由选项

表 4.8 [routing]

选项名称 说明 类型
access_mode 根据事务类别拆分读取和写入。 字符串
bind_address 路由器绑定的地址,如果未定义端口,则使用 bind_port 字符串
bind_port bind_address 使用的默认端口 整数
client_connect_timeout 从 MySQL 服务器接收数据包的最长时间(以秒为单位) 整数
client_ssl_ca 证书颁发机构 (CA) 证书文件(PEM 格式)的路径 字符串
client_ssl_capath 包含受信任的 SSL 证书颁发机构 (CA) 证书文件(PEM 格式)的目录的路径。 字符串
client_ssl_cert 用于加密客户端到路由器通信的 SSL 证书(PEM)的路径 字符串
client_ssl_cipher 客户端和 MySQL Router 之间允许使用的密码,默认为安全的 SSL 密码列表 字符串
client_ssl_crl 包含证书吊销列表(PEM 格式)的文件的路径 字符串
client_ssl_crlpath 包含证书吊销列表文件(PEM 格式)的目录的路径 字符串
client_ssl_curves 客户端和 MySQL Router 之间允许使用的曲线,默认为安全的 SSL 曲线列表 字符串
client_ssl_dh_params DH 参数文件的名称。默认情况下未设置 字符串
client_ssl_key 用于加密客户端到路由器通信的 SSL 私钥证书文件(PEM)的路径 字符串
client_ssl_mode 控制从客户端到 MySQL Router 的连接是否必须加密,如果未设置,则默认为 PREFERRED 字符串
client_ssl_session_cache_mode 启用或禁用客户端连接的 TLS 会话缓存 布尔值
client_ssl_session_cache_size 客户端连接的 TLS 会话缓存中的条目数 整数
client_ssl_session_cache_timeout 从客户端 TLS 会话缓存中删除 TLS 会话之前的时间(以秒为单位) 整数
connect_retry_timeout MySQL Router 在重试连接到后端之前等待的秒数 整数
connect_timeout 连接到 MySQL 服务器的尝试被视为超时的秒数 整数
connection_sharing 是否启用连接共享。 整数
connection_sharing_delay 将空闲连接移动到连接池之前要等待的秒数。 数字
destinations 路由目标,可以是逗号分隔的 MySQL 服务器列表,也可以是元数据缓存定义 字符串
dynamic_state 生成的 JSON 文件的路径,用于跟踪和存储活动的 MySQL InnoDB Cluster 元数据服务器地址 字符串
max_connect_errors 放弃之前允许的最大 MySQL 服务器连接失败次数 整数
max_connections 分配给路由目标 MySQL 服务器的最大连接数 整数
net_buffer_length 设置 net_buffer_length 整数
protocol 用于连接到 MySQL 服务器的协议 字符串
read_timeout 对元数据服务器的读取操作被视为超时的秒数 整数
router_require_enforce 如果启用,则检索当前用户的属性并强制执行 布尔值
routing_strategy 路由策略(可选),路由器选择目标 MySQL 服务器的方式 字符串
server_ssl_ca 证书颁发机构 (CA) 证书文件(PEM 格式)的路径 字符串
server_ssl_capath 包含受信任的 SSL 证书颁发机构 (CA) 证书文件(PEM 格式)的目录的路径。 字符串
server_ssl_cert 用于加密路由器到服务器通信的 SSL 证书(PEM)的路径 字符串
server_ssl_cipher 服务器的 SSL 密码 字符串
server_ssl_crl 包含证书吊销列表(PEM 格式)的文件的路径 字符串
server_ssl_crlpath 包含证书吊销列表文件(PEM 格式)的目录的路径 字符串
server_ssl_curves 服务器的 SSL 曲线 字符串
server_ssl_key 用于加密路由器到服务器通信的 SSL 私钥证书文件(PEM)的路径 字符串
server_ssl_mode 控制从路由器到服务器的连接是否必须加密 字符串
server_ssl_session_cache_mode 启用或禁用服务器连接的 TLS 会话缓存 布尔值
server_ssl_session_cache_size 服务器连接的 TLS 会话缓存中的条目数 整数
server_ssl_session_cache_timeout 从服务器 TLS 会话缓存中删除 TLS 会话之前的时间(以秒为单位) 整数
server_ssl_verify 验证服务器向路由器提供的 SSL 证书 字符串
socket Unix 域套接字文件的路径 字符串
wait_for_my_writes 只读查询等待最后写入的事务。 整数
wait_for_my_writes_timeout 等待 read_only 目标应用写入事务的最长时间(以秒为单位),超过此时间后将回退到 read_write 目标。 整数

目标状态选项

表 4.9 [destination_status]

选项名称 说明 类型
error_quarantine_interval 定义检查隔离目标连接之间的间隔(以秒为单位)。如果可以建立连接,则目标将移出隔离状态,并可用于连接。 整数
error_quarantine_threshold 定义在 MySQL Router 将目标添加到隔离状态并停止将其用作目标之前,连接到路由目标的连续失败尝试的阈值,直到目标被隔离机制清除。例如,如果设置为 5,则在连续 5 次尝试连接失败后,目标将被隔离。 整数

表 4.10 [connection_pool]

选项名称 说明 类型
idle_timeout 在关闭空闲连接之前将其保留在集合池中的秒数 数字
max_idle_server_connections 客户端断开连接后保持打开的连接数 数字

元数据缓存选项

表 4.11 [metadata_cache]

选项名称 说明 类型
auth_cache_refresh_interval 两次身份验证缓存刷新尝试之间的时间 数字
auth_cache_ttl 如果未刷新,缓存变为无效之前的时间 数字
cluster_type 路由器引导所针对的对象 字符串
metadata_cluster InnoDB Cluster 名称 字符串
router_id 路由器 ID 整数
ssl_ca 用于验证服务器证书的 SSL CA 文件 字符串
ssl_capath 包含用于验证服务器证书的 SSL CA 文件的目录 字符串
ssl_crl 用于验证服务器证书的 SSL CRL 文件 字符串
ssl_crlpath 包含用于验证服务器证书的 SSL CRL 文件的目录 字符串
ssl_mode 用于连接到元数据服务器的 SSL 连接模式,如果未设置,则默认为 PREFERRED 字符串
tls_version 如果启用了 SSL,则为以逗号分隔的 TLS 版本列表,用于请求 字符串
ttl 生存时间(以秒为单位) 整数
use_gr_notifications 组复制通知行为 整数
user 访问 MySQL 服务器元数据架构的 MySQL 用户 字符串

日志记录选项

表 4.12 [logger]

选项名称 说明 类型
destination 要记录到的设备的名称;可选择与 [consolelog] 一起使用 字符串
文件名 日志文件名称;可选择与 [logger] 和 [filelog] 一起使用 字符串
级别 日志记录级别 字符串
时间戳精度 记录器时间戳精度 字符串

HTTP 服务器选项

表 4.13 [http_server]

选项名称 说明 类型
bind_address 绑定到 HTTP 端口的 IP 地址 字符串
端口 HTTP 服务器 TCP 端口 整数
require_realm [http_auth_realm] 名称 字符串
ssl_cert SSL 证书文件名 字符串
ssl_cipher 已批准的 SSL 密码 字符串
ssl_dh_param DH 参数文件名 字符串
ssl 启用 TLSv1.2 或更高版本的支持 整数
ssl_key SSL 密钥文件名 字符串
static_folder HTTP 服务器静态文件请求的目录 字符串

表 4.14 [http_auth_realm]

选项名称 说明 类型
后端 [http_auth_backend] 部分的名称 字符串
方法 HTTP 身份验证方法 字符串
名称 已验证用户的领域名称 字符串
require 需要身份验证验证 字符串

表 4.15 [http_auth_backend]

选项名称 说明 类型
后端 后端类型 字符串
文件名 后端存储文件名 字符串

表 4.16 [io]

选项名称 说明 类型
后端 IO 后端 字符串
线程数 IO 线程数 数字

MySQL Router 配置文件选项说明

  • access_mode

    类型 字符串
    默认值
    有效值 自动

    定义 MySQL Router 如何处理只读和读写查询。如果启用,只读查询将被定向到只读服务器,而读写查询将被定向到读写服务器。请参阅 第 3.5 节,“读/写拆分”

  • wait_for_my_writes

    类型 整数
    默认值 1
    最小值 0
    最大值 1

    只读查询等待最后写入的事务。

    请参阅 第 3.5 节,“读/写拆分”

  • wait_for_my_writes_timeout

    类型 整数
    默认值 1
    最小值 0
    最大值 4294967295

    等待 read_only 目标应用写入事务的最长时间(以秒为单位),超过此时间后将回退到 read_write 目标。

    请参阅 第 3.5 节,“读/写拆分”

  • router_require_enforce

    类型 布尔值
    默认值 0

    如果启用,MySQL Router 将检索用户在 USER_ATTRIBUTES 表中的 router_requires 属性中定义的值。

    该属性必须采用以下格式

            {router_require: {value}}

    以下是可能的值

    • {}:无要求。

    • {ssl: true}:MySQL Router 要求客户端使用 SSL。

    • {x509: true}:MySQL Router 要求客户端使用 SSL 和 x509 证书。

    • {issuer: ""}:MySQL Router 要求客户端提供 SSL、x509 证书和证书颁发者。

    • {ssl: true}:MySQL Router 要求客户端提供 SSL、x509 证书和证书主题。

  • --core-file

    命令行格式 --core-file[={0|1}]
    类型 布尔值
    默认值 0

    如果 mysqlrouter 崩溃,则写入核心文件。核心文件的名称和位置取决于系统。在 Linux 上,名为 core.pid 的核心文件将写入进程的当前工作目录。pid 表示服务器进程的进程 ID。在 macOS 上,如果进程具有 com.apple.security.get-task-allow 授权,则名为 core.pid 的核心文件将写入 /cores 目录。在 Solaris 上,使用 coreadm 命令指定核心文件的写入位置及其命名方式。在 Windows 上,名为 mysqlrouter.{pid}.dmp 的小型转储文件将写入进程的当前工作目录。

  • event_source_name

    类型 字符串
    默认值

    仅限 Microsoft Windows 平台。定义 MySQL Router 在 Microsoft Windows 上作为服务运行时使用的服务名称。这使您能够区分运行多个 MySQL Router 实例时的服务以及它们在事件日志中的消息。

    例如

    [DEFAULT]
    event_source_name = MySQLRouterService
  • logging_folder

    类型 字符串
    默认值 $router_basepath

    MySQL Router 日志文件目录的路径。日志文件名为 mysqlrouter.log,如果该文件已存在,则会生成或追加到该文件。

    logging_folder 设置为空值会将消息发送到控制台 (stdout)。

    注意

    在 MySQL Router 2.1 中,默认的 logging_folder 值已从 "" 更改为 Router 的基本路径。

    将日志发送到 /var/log/mysqlrouter/mysqlrouter.log 的示例

    [DEFAULT]
    logging_folder = /var/log/mysqlrouter

    使用 --directory 引导选项时,生成的配置文件会将其设置为 $directory/log/。

  • plugin_folder

    类型 字符串
    默认值(Windows)
    默认值(其他) /usr/local/lib/mysqlrouter

    MySQL Router 插件的路径。此文件夹必须与 MySQL Router 安装目录匹配。仅当您有一个自定义安装,并且插件不在标准安装位置时,才应设置此项。

    默认值/usr/local/lib/mysqlrouter

  • runtime_folder

    类型 字符串
    默认值(Windows)
    默认值(其他) /run/mysqlrouter

    MySQL Router 运行时文件的路径。

    默认值/run/mysqlrouter

  • master-key-writer

    命令行格式 --master-key-writer file_path
    类型 字符串

    从 STDIN 读取主密钥的脚本。使用 --master-key-writer 命令行引导选项设置。

  • master-key-reader

    命令行格式 --master-key-reader file_path
    类型 字符串

    将主密钥返回到 STDOUT 的脚本。使用 --master-key-reader 命令行引导选项设置。

  • config_folder

    类型 字符串
    默认值(Windows)
    默认值(其他) /usr/local/etc/mysqlrouter

    MySQL Router 配置文件的路径。

    注意

    config_folder 当前在编译时设置。当未来的插件有自己的配置文件时,它们可以使用此选项。

    默认值/usr/local/etc/mysqlrouter

  • sinks

    类型 字符串
    有效值(Windows)

    consolelog

    filelog

    eventlog

    有效值(其他)

    consolelog

    filelog

    syslog

    定义的日志级别发送到的接收器(不同的日志记录方法)。

    支持的接收器值包括:consolelogfilelogeventlog(在 Windows 上)和 syslog(在基于 Unix 的系统上)。使用逗号分隔列表定义多个值。

    默认值:如果 "[DEFAULT]" 部分中的 logging_folder 选项不为空,则为 filelog,否则为 consolelog

    例如,要将记录器配置为使用文件、控制台和事件日志,每个都使用 [logger] 部分中配置的调试日志级别

    [logger]
    level=debug
    sinks=consolelog,eventlog,filelog
  • keyring_path

    类型 字符串
    默认值(Windows) %PROGRAMDATA%\MySQL\MySQL Router\keyring-data
    默认值(其他) /run/mysql-router/keyring-data

    指向密钥环文件的位置。

    系统范围的引导不会将此选项添加到生成的配置文件中,并假定密钥环文件位于系统范围的运行时状态目录中。如果还使用了 --directory,则密钥环文件存储在该实例的运行时状态目录下,位于指定目录中的 run/ 下。

    如果未定义此选项,则使用系统范围的默认路径。

    用法示例

    keyring_path = /opt/myrouter/data/keyring
    master_key_path = /opt/myrouter/mysqlrouter.key
  • master_key_path

    类型 字符串
    默认值(Windows) %PROGRAMDATA%\MySQL\MySQL Router\mysqlrouter.key
    默认值(其他) /run/mysql-router/mysqlrouter.key

    主密钥文件的位置。此选项允许无人值守解密,否则会在启动时请求其位置。

    如果未指定此选项,则使用系统范围的默认路径。

    用法示例

    keyring_path = /opt/myrouter/data/keyring
    master_key_path = /opt/myrouter/mysqlrouter.key
  • unknown_config_option

    类型 字符串
    默认值 警告
    有效值

    警告

    错误

    确定 MySQL Router 处理未知配置选项(例如拼写错误)的行为。

    警告 是默认行为,引导程序在生成的配置文件中将其定义为 错误。警告会记录一条警告消息,但不会停止,而错误表示 MySQL Router 初始化失败并退出。

    [DEFAULT]
    unknown_config_option=warning
  • user (system)

    类型 字符串

    以名称为 user_name 的用户或数字用户 ID 为 user_id 的用户身份运行 mysqlrouter。在此上下文中,“用户”指的是系统登录帐户,而不是授权表中列出的 MySQL 用户。这也可以使用 --user 命令行选项在运行时分配。

    在 Linux 上,使用官方 DEB 或 RPM 软件包安装 Router 会在主机上创建一个名为“mysqlrouter”的本地系统用户和组,默认情况下,MySQL Router 以该用户身份运行。此帐户没有 shell 访问权限,其主目录指向存储默认配置文件的目录。

    此选项的目的是以具有受限系统权限的用户身份运行 MySQL Router。如果系统上不存在该用户,或者尝试以 root 身份启动 Router,则会发出错误并退出 Router。

    MySQL Router 可以在任何操作系统用户下进行引导和执行,并且不需要特殊权限,只需要对其自身文件具有读写访问权限即可。它访问的文件包括插件(读取/执行)、配置文件、日志、UNIX 域套接字文件(如果启用)等等。

    默认情况下,配置文件和日志文件写入系统范围的位置,例如 /etc/var/log。或者,可以使用 --directory 选项将 Router 引导到其自身的独立目录中。例如

    $> sudo mysqlrouter --bootstrap localhost:3310 --directory /a/path/myrouter --user snoopy

    在本例中,Router 创建 /a/path/myrouter 并将所有生成的文件和目录添加到此处,并且这些文件和目录仅可由系统用户 snoopy 写入。此外,user 在生成的配置文件 /a/path/myrouter/mysqlrouter.conf 中定义。

    [DEFAULT]
    user=snoopy
    注意

    这与 user 定义(在 [metadata_cache] 部分中定义)不同,后者是 MySQL 用户。

  • ssl_ca

    类型 字符串

    连接到元数据服务器时,用于验证服务器证书的 SSL CA 文件的路径。

    可以选择使用 --ssl-ca 引导选项进行设置。

  • ssl_capath

    类型 字符串

    连接到元数据服务器时,用于验证服务器证书的 SSL CA 文件所在目录的路径。

    可以选择使用 --ssl-capath 引导选项进行设置。

  • ssl_crl

    类型 字符串

    连接到元数据服务器并验证其 SSL 证书时要使用的 SSL CRL 文件的路径。

    可以选择使用 --ssl-crl 引导选项进行设置。

  • ssl_crlpath

    类型 字符串

    连接到元数据服务器并验证其 SSL 证书时要使用的 SSL CRL 文件所在目录的路径。

    可以选择使用 --ssl-crlpath 引导选项进行设置。

  • tls_version

    类型 字符串

    如果启用了 SSL,则为以逗号分隔的 TLS 版本请求列表,例如“TLSv1.2,TLSv1.3”。

    可以选择使用 --tls-version 引导选项进行设置。

  • bind_address

    类型 字符串
    默认值 127.0.0.1

    与可选的 bind_address 选项相关的信息。

    • 路由条目可以绑定到网络接口 (NIC)。默认的 bind_address127.0.0.1。如果此处未定义端口,则需要设置 bind_port

    • 默认情况下,--bootstrap 为生成的 Router 配置文件中的每个路由设置 bind_address=0.0.0.0。可以使用 --conf-bind-address 更改此值。

    • 绑定到特定的 IPv4 或 IPv6 地址允许并确保 MySQL Router 不会在不允许执行任何操作的 NIC 上启动和路由服务。

    • 每个路由配置组不能指定多个绑定地址。但是,使用 0.0.0.0:$port(您可以在其中定义 $port)会绑定主机上的所有网络接口 (IP)。也可以使用 IPv6 地址。

    用法示例

    bind_address = 127.0.0.1:7001
    注意

    bind_address 不能列在 destinations 列表中。

  • bind_port

    类型 整数

    (可选)您可以使用 bind_portbind_address 定义默认端口。如果未在 bind_address 中配置端口,则需要使用 bind_port

    (可选)使用 --conf-base-port 引导选项设置这些值。

    以下三个示例都导致 bind_address = 127.0.0.1:7001

    [routing:example_1]
    bind_port = 7001
    [routing:example_2]
    bind_port = 7001
    bind_address = 127.0.0.1
    [routing:example_3]
    bind_address = 127.0.0.1:7001
  • socket

    平台特定 Linux
    类型 字符串

    使用 socket 选项启用套接字,该选项可以指定 TCP bind_portbind_address 选项,也可以不指定。例如:

    [routing]
    socket = /tmp/mysqlrouter.sock
    destinations = a.example.com:3306,b.example.com:3307

    启动 MySQL Router 时,如果套接字文件已存在或无法写入,则 Router 将拒绝运行。

    相对路径是可以接受的,并基于启动 Router 的当前工作目录。

    Router 可以同时侦听 TCP 套接字和 Unix 套接字。例如,以下 [routing] 配置示例有效,并将 Router 配置为侦听 localhost:1234/tmp/mysqlrouter.sock 上的连接。

    [routing:my_redirect]
    bind_address = localhost:1234
    socket = /tmp/mysqlrouter.sock
    destinations = localhost:57121, localhost:57122, localhost:57123
    注意

    Unix 域套接字长度限制是平台特定的,不应超过系统允许的长度。

  • protocol

    类型 字符串
    默认值 classic
    有效值

    classic

    x

    由路由插件在连接到目标 MySQL 服务器时使用,可以设置为“classic”(默认值)或“x”(X 协议)。

    用法示例

    [routing:basic_failover]
    bind_port = 7001
    destinations = 10.20.200.1:33060, 10.20.200.2:33060
    protocol = x

    protocol 选项还会影响每个目标使用的默认端口。如果未配置目标端口,则“classic”(默认值)的默认端口为 3306,“x”(X 协议)的默认端口为 33060。

  • pid_file

    类型 字符串

    设置 PID 文件的位置。可以通过三种不同的方式设置(按优先顺序):--pid-file 命令行选项、在 Router 的配置文件中设置此 pid_file 选项,或者定义 ROUTER_PID 环境变量。

    如果指定了 --bootstrap,则将忽略 pid_file 和 ROUTER_PID 定义。这与 --pid-file 命令行选项不同,后者会导致 Router 失败。

    如果未指定 --bootstrap,则以下情况会导致 Router 失败:--pid-file 已存在、pid_file 或 ROUTER_PID 已设置但为空,或者 Router 无法写入 PID 文件。

  • connect_timeout

    类型 整数
    默认值 5
    最小值 1
    最大值 65536

    MySQL Router 在连接到目标 MySQL 服务器时使用的超时值。该值不能是无限的,并且无效值会导致配置错误。有效范围介于 1 到 65536 之间。您应该将此值保持在较低水平。

    用法示例

    [routing]
    connect_timeout = 5

    可以在引导时使用 --conf-set-option=routing.connect_timeout 进行设置。

  • connect_timeout

    类型 整数
    默认值 5

    MySQL Router 在连接到 MySQL 元数据服务器时使用的超时值。

    用法示例

    [DEFAULT]
    connect_timeout = 5

    可以在引导时使用 --connect-timeout--conf-set-option=DEFAULT.connect_timeout 进行设置。

  • read_timeout

    类型 整数
    默认值 30

    MySQL Router 从 MySQL 元数据服务器读取数据时使用的超时值。默认值为 30 秒。

    用法示例

    [DEFAULT]
    read_timeout = 30
  • destinations

    类型 字符串

    提供用于建立连接的主机信息。它接受以逗号分隔的目标地址列表或指向 InnoDB 集群的元数据缓存链接。

    使用特定主机时的示例用法(静态路由)

    destinations = a.example.com,b.example.com,c.example.com
    注意

    如果未显式设置目标端口,则如果 protocol 设置为“classic”或未设置(默认值),则默认端口为 3306,如果 protocol 设置为“x”,则默认端口为 33060。

    使用 InnoDB 集群元数据缓存时的示例用法

    destinations=metadata-cache://mycluster/default?role=PRIMARY

    metadata-cache URI 选项包括:

    • role:确定可用于连接的实例类型。可接受的值包括 PRIMARY、SECONDARY 或 PRIMARY_AND_SECONDARY。

      routing_strategy mysqlrouter.conf 选项定义了特定策略,默认的元数据缓存路由策略是 round-robin

    • disconnect_on_promoted_to_primary:控制当辅助服务器升级为主服务器时,是否关闭与辅助服务器的现有客户端连接。默认值为“no”,表示在升级后,不会关闭与已升级辅助服务器的现有客户端连接。在 URI 中设置 disconnect_on_promoted_to_primary=yes 可关闭这些现有连接。

    • disconnect_on_metadata_unavailable:控制在组过载时是否关闭现有客户端连接。默认值为“no”,表示在组过载时,不会关闭现有客户端连接。在 URI 中设置 disconnect_on_metadata_unavailable=yes 可关闭这些现有连接。

    注意

    相关地,以下情况会导致断开连接:在主服务器降级为辅助服务器后连接到主服务器,以及连接到不再属于集群的节点。

  • dynamic_state

    类型 字符串

    此选项跟踪并存储活动的 MySQL InnoDB 集群元数据服务器地址,并在 Router 重新启动时加载它们。此功能由 --bootstrap 激活。

    引导会在 [DEFAULT] 部分下的 mysqlrouter.conf 文件中定义 dynamic_state 选项。该值是指向名为 state.json 的 JSON 文件的路径,该文件在引导 Router 时创建。state.json 使用 InnoDB 集群元数据服务器地址和组复制 ID(由 InnoDB 集群返回的 group_replication_name)进行初始化;在 Router 运行时添加和更新其他信息。

    mysqlrouter.conf 条目示例

    [DEFAULT]
    dynamic_state=/opt/myrouter/data/state.json

    --bootstrap 生成的 state.json 示例

    {
        "metadata-cache": {
            "group-replication-id": "4b9e817a-0254-11e9-9cc0-080027bb5030",
            "cluster-metadata-servers": [
                "mysql://127.0.0.1:3310",
                "mysql://127.0.0.1:3320",
                "mysql://127.0.0.1:3330"
            ]
        },
        "version": "1.0.0"
    }
  • routing_strategy

    类型 字符串
    有效值

    first-available

    next-available

    round-robin

    round-robin-with-fallback

    路由策略定义了 MySQL Router 如何选择要连接到的 MySQL 服务器。

    可用策略

    注意

    本节后面的角色文档描述了可用的 rolerouting_strategy 组合和冲突。

    无法访问的目标将被隔离和跳过,并每隔 error_quarantine_interval 秒探测一次其可用性。除 next-available 以外的所有路由策略都利用了此行为。

    • round-robin:对于负载均衡,每个新连接都以循环方式连接到下一个可用的服务器。

    • round-robin-with-fallback:对于负载均衡,每个新连接都以循环方式连接到下一个可用的辅助服务器。如果没有可用的辅助服务器,则以循环方式使用主服务器列表中的服务器。

    • first-available:新连接被路由到目标列表中第一个可用的服务器。如果失败,则使用下一个可用的服务器。此循环一直持续到所有服务器都不可用。

    • next-available:与 first-available 类似,新连接被路由到目标列表中第一个可用的服务器。与 first-available 不同的是,如果一个服务器被标记为不可访问,那么它将被丢弃,并且永远不会再被用作目标。

      限制包括

      • 在选择的所有节点都被丢弃后,没有办法将服务器添加回列表中。

        与其他策略不同,无法访问的目标不会每隔 error_quarantine_interval 秒探测一次其可用性。

      • 重新启动 MySQL Router 后,所有关于哪些服务器被丢弃的信息都将丢失,并且所有服务器都将再次可用。

      • 元数据缓存不支持 next-available 路由策略,因为 next-available 仅适用于静态路由。

    role 的默认值和可用组合

    • PRIMARYround-robin 是默认行为(如果未设置 routing_strategy),而引导程序会将 routing_strategy=first-available 添加到生成的 MySQL Router 配置文件中。可用的策略值为 first-availableround-robin

    • SECONDARYround-robin 是默认行为(如果未设置 routing_strategy),而引导程序会将 routing_strategy=round-robin-with-fallback 添加到生成的 MySQL Router 配置文件中。可用的策略值为 first-availableround-robinround-robin-with-fallback

    • PRIMARY_AND_SECONDARYround-robin 是默认行为(如果未设置 routing_strategy)。可用的策略值为 first-availableround-robin

  • max_connections

    类型 整数
    默认值 512
    最小值 1
    最大值 65536

    每个路由都可以限制路由或连接的数量。一种可能的用途是帮助防止可能的拒绝服务 (DOS) 攻击。默认值为 512,有效范围为 1 到 65536。

    这类似于 MySQL 服务器的 max_connections 服务器系统变量。

    [routing:mycluster_default_rw]
    max_connections = 512

    或者,使用较新的 max_total_connections 配置选项,该选项为所有 Router 部分组合设置一个值。

    最大值取决于系统的 poll(或 linux_epoll)限制和可用 CPU 内核/线程的数量。另请参阅 [IO] backendthreads 配置选项。

    [DEFAULT] 部分中可选地设置 max_connections 会为每个路由目标设置默认值。

  • max_total_connections

    类型 整数
    默认值 512
    最小值 1
    最大值 9223372036854775807

    Router 处理的客户端连接的最大数量,以帮助防止文件描述符耗尽。

    这类似于 MySQL 服务器的 max_connections 服务器系统变量。

    [DEFAULT]
    max_total_connections = 512
    注意

    旧版 max_connections 选项为每个路由实例设置一个值,例如一个用于只读,另一个用于只写。max_total_connections 选项为所有路由实例组合设置一个值。

    默认值为 512,它在 [DEFAULT] 部分下设置。

  • thread_stack_size

    类型 整数
    默认值 64
    最小值 1
    最大值 65535

    为每个线程分配的堆栈大小。它以千字节为单位,默认为 64。

    [DEFAULT]
    thread_stack_size=128
  • net_buffer_length

    类型 整数

    设置 net_buffer_length MySQL 服务器选项。

  • max_connect_errors

    类型 整数
    默认值 100
    最小值 1
    最大值 4294967295

    默认值为 100,有效范围为 1 到 2^32(4294967295,无符号整数)。

    这类似于 MySQL 服务器的 max_connect_errors 服务器系统变量。

    如果应用程序频繁地重新连接,这可能会导致性能略有下降,因为 MySQL Router 会尝试发现是否存在与连接相关的错误。

    成功的连接会重置错误计数器。

    每个路由都有自己的被阻止主机列表。被阻止的客户端会收到 MySQL 服务器错误代码 1129,并显示略有不同的错误消息:"1129: 来自 fail.example.com 的连接错误过多"。Router 日志包含被阻止客户端的额外信息,例如:INFO [...] fail.example.com 的身份验证错误 1 次(最多 100 次)WARNING [...] 阻止客户端主机 fail.example.com

    max_connect_errors = 100
  • client_connect_timeout

    类型 整数
    默认值 9
    最小值 2
    最大值 31536000

    这类似于 MySQL 服务器的 connect_timeout 服务器系统变量。

    默认值为 9,比 MySQL 5.7 默认值少 1。有效范围为 2 到 31536000。

    client_connect_timeout = 9
  • auth_cache_refresh_interval

    类型 数字
    默认值 2
    最小值 0.001
    最大值 3600

    身份验证缓存刷新尝试之间的时间(以秒为单位)。默认为 2。该值必须小于 auth_cache_ttl,并且大于 ttl,否则 Router 将无法启动。

    如果 http_auth_backend 部分的 backend 选项设置为 metadata_cache,则应用此选项;这是一个 Router REST API 功能。

  • auth_cache_ttl

    类型 数字
    默认值 -1
    最小值 0.001
    最大值 3600

    如果未刷新,缓存变为无效之前的时间(以秒为单位)。默认为 -1(无限)。该值必须大于 auth_cache_refresh_intervalttl,否则 Router 将无法启动。

    如果 http_auth_backend 部分的 backend 选项设置为 metadata_cache,则应用此选项;这是一个 Router REST API 功能。

  • router_id

    类型 整数
    最大值(≥ 8.4.1) 4294967295
    最大值(8.4.0) 999999
    最大值 4294967295

    MySQL Router ID。

  • server_ssl_cert

    类型 字符串
    默认值

    PEM 格式的 SSL 公钥证书文件的路径名。这用于在引导过程中促进服务器端身份验证。

  • server_ssl_key

    类型 字符串
    默认值

    用于加密路由器到服务器连接的 PEM 格式的 SSL 私钥文件的路径名。另请参阅 第 4.4 节 “TLS 配置”

  • server_ssl_curves

    类型 字符串

    默认为安全的 SSL 曲线列表。将此字符串格式化为以冒号分隔的曲线名称列表。

  • server_ssl_cipher

    类型 字符串

    默认为安全的 SSL 密码列表。将此字符串格式化为以冒号分隔的密码名称列表。

  • server_ssl_verify

    类型 字符串
    默认值 DISABLED
    有效值

    DISABLED

    VERIFY_CA

    VERIFY_IDENTITY

    验证服务器向路由器提供的 SSL 证书。

    • DISABLED:如果服务器在握手中未提供证书,则连接失败。

    • VERIFY_CA:如果服务器证书与 MySQL Router 信任的 CA 不匹配,则连接失败。

    • VERIFY_IDENTITY:如果服务器证书与 MySQL Router 信任的 CA 不匹配,或者服务器证书的使用者与 MySQL Router 连接的主机名或 IP 地址不匹配,则连接失败。

  • server_ssl_mode

    类型 字符串
    默认值 AS_CLIENT
    有效值

    AS_CLIENT

    DISABLED

    PREFERRED

    REQUIRED

    在 MySQL Router 和服务器之间建立连接时使用的 SSL 连接模式。另请参阅 第 4.4 节 “TLS 配置”

  • server_ssl_ca

    命令行格式 --server-ssl-ca 文件路径
    类型 字符串
    默认值

    PEM 格式的证书颁发机构 (CA) 证书文件的路径名。该文件包含受信任的 SSL 证书颁发机构的列表。另请参阅 第 4.4 节 “TLS 配置”

  • server_ssl_capath

    命令行格式 --server-ssl-capath 目录路径
    类型 字符串
    默认值

    包含 PEM 格式的受信任 SSL 证书颁发机构 (CA) 证书文件的目录的路径名。另请参阅 第 4.4 节 “TLS 配置”

  • client_ssl_cert

    命令行格式 --client-ssl-cert 文件路径
    类型 字符串
    默认值

    PEM 格式的 SSL 公钥证书文件的路径名。这用于在引导过程中促进客户端身份验证。

    -client_ssl_key 类似,此选项仅在使用 root 帐户的引导过程中使用。当 root 帐户是用 REQUIRE X509 创建的,因此以 root 用户身份登录需要客户端进行自身身份验证时,此选项很有用。

  • server_ssl_crlpath

    命令行格式 --server-ssl-crlpath 目录路径
    类型 字符串
    默认值

    包含 PEM 格式的证书吊销列表文件的目录的路径。另请参阅第 4.4 节“TLS 配置”

  • server_ssl_crl

    命令行格式 --server-ssl-crl 文件路径
    类型 字符串
    默认值

    包含 PEM 格式的证书吊销列表的文件的路径名称。另请参阅第 4.4 节“TLS 配置”

  • client_ssl_key

    命令行格式 --client-ssl-key 文件路径
    类型 字符串
    默认值

    用于加密客户端到路由器连接的 PEM 格式的 SSL 私钥文件的路径名称。另请参阅第 4.4 节“TLS 配置”

  • client_ssl_dh_params

    类型 字符串

    DH 参数文件的名称。如果指定且不为空,则使用此文件中的 DH 参数,而不是内部默认的 DH 参数。以 PEM 格式格式化 DH 参数文件。

  • client_ssl_curves

    类型 字符串

    客户端和 MySQL Router 之间允许哪些曲线,默认为安全 SSL 曲线列表。将此字符串格式化为以冒号分隔的曲线名称列表。

  • client_ssl_cipher

    类型 字符串

    客户端和 MySQL Router 之间允许哪些密码,默认为安全 SSL 密码列表。将此字符串格式化为以冒号分隔的密码名称列表。

  • client_ssl_mode

    类型 字符串
    默认值 PREFERRED
    有效值

    PREFERRED

    DISABLED

    PASSTHROUGH

    REQUIRED

    控制从客户端到 MySQL Router 的连接是否必须加密。另请参阅第 4.4 节“TLS 配置”

  • ssl_mode

    类型 字符串
    默认值 PREFERRED
    有效值

    PREFERRED

    DISABLED

    REQUIRED

    VERIFY_CA

    VERIFY_IDENTITY

    用于连接到 MySQL 元数据服务器的 SSL 模式。如果未设置,则默认为 PREFERRED

    设置为 PREFERRED(默认值)时,如果未使用 SSL 且与元数据服务器的连接未加密,则引导程序将发出警告。

    可用值为 DISABLED、PREFERRED、REQUIRED、VERIFY_CA 和 VERIFY_IDENTITY。与 mysql 客户端一样,此值不区分大小写。

    引导程序还有一个运行时选项;请参阅 --ssl-mode

  • 用户 (MySQL)

    类型 字符串

    生成的 MySQL 用户,具有访问 MySQL 服务器元数据架构的权限。此用户的密码是自动生成的,并存储在加密的 密钥环 中。默认情况下,此密钥环的加密密钥存储在受读取保护的 主密钥存储 文件中,该文件在配置文件中定义。最常见的情况是,此用户和关联密码是在引导程序期间自动生成的。相关的命令行选项是 --force-password-validation--password-retries。默认情况下,生成的密码通过 STRONG validate_password 强度。

    密码完全由路由器管理,并且永远不会公开,它使用运行 MySQL Router 的操作系统帐户存储在本地密钥环系统中。然后路由器可以使用它连接到 InnoDB Cluster 并检索当前拓扑信息。默认情况下,路由器和元数据服务器之间的会话使用 SSL 加密。

    生成的密钥环文件的存储位置取决于引导程序的配置方式。对于独立安装(使用 --directory 时),它存储在独立目录中的 run/ 下。对于系统范围的安装,它存储在系统范围的运行时状态目录中,该路径因平台而异。有关其他信息,请参阅 master_key_pathkeyring_path

    此用户被分配(并需要)以下权限

    Privileges needed by the Router account:
    
    	On Metadata Server:
    
    		SELECT ON mysql_innodb_cluster_metadata.*
    
    	On Target Replica Sets:
    
    		SELECT ON performance_schema.replication_group_members
    		SELECT ON performance_schema.replication_group_member_stats

    生成的用户名遵循以下模式:mysql_router_{router_id}_[0-9a-z]{7},其中 {router_id} 是数字路由器 ID,[0-9a-z]{7} 是 7 个随机小写字母数字字符。如果路由器 ID 已存在于 mysqlrouter.conf 中,则会重复使用该路由器 ID,并且其值不能超过 4294967295 (2^32-1)。

    注意

    此用户不同于 [DEFAULT] 部分中定义的 用户 定义,后者是系统用户。

    此结构在 MySQL Router 8.4.1 中发生了变化,以前是 mysql_router_[0-9]{1,6}_[0-9a-z]{12}

  • metadata_cluster

    类型 字符串

    InnoDB Cluster 的名称。

    注意

    列出 MySQL InnoDB 集群名称的 SQL 查询:SELECT * FROM mysql_innodb_cluster_metadata.clusters;

  • use_gr_notifications

    类型 整数
    默认值 0
    有效值

    0

    1

    启用组复制通知。启用后,路由器会异步收到有关大多数集群更改的通知。可以在 mysqlrouter.conf 中手动启用它,也可以在引导程序期间使用命令行选项 --conf-use-gr-notifications 在那里启用它。

    当路由器从组复制接收到以下任何通知时,它会刷新集群元数据

    • group_replication/membership/quorum_loss

    • group_replication/membership/view

    • group_replication/status/role_change

    • group_replication/status/state_change

    注意

    组复制通知功能需要从路由器到每个实例的 X 协议连接,该实例必须运行 X 插件。如果 X 协议连接不可用,则元数据刷新将按照 ttl 间隔执行,就像未启用通知功能一样。

    尽管组复制通知依赖于 X 协议连接,但接收到的通知会触发元数据刷新,该刷新使用到实例的经典 MySQL 协议连接。

    启用后,组复制通知功能允许更高的 ttl 值,因为在 ttl 间隔执行的元数据刷新成为一种额外的保障措施,而不是保持集群状态信息最新的主要手段。禁用后,建议使用较低的 ttl 值(例如 0.5 秒,默认值)以避免频繁重新连接到实例并查询元数据更改的开销。

  • ttl

    类型 数字
    默认值 0.5
    最小值 0
    最大值 3600

    元数据缓存中信息的生存时间(以秒为单位)。

    接受整数或浮点值。粒度限制为毫秒,其中 0.001 等于 1 毫秒。精度被截断到支持的范围;例如,TTL=0.0119 被视为 11 毫秒。值 0 表示元数据缓存模块在紧密循环中持续查询元数据。

    该值必须小于 auth_cache_refresh_intervalauth_cache_ttl,否则路由器将无法启动。

    无论语言环境如何,唯一支持的小数点分隔符是“.”(句点),并且支持科学计数法,例如 TTL=1.6E-2

  • destination

    类型 字符串
    默认值(Windows) CON
    默认值(其他) /dev/stderr
    有效值(Windows)

    CON

    NUL

    有效值(其他)

    /dev/null

    /dev/stderr

    /dev/stdout

    将直接控制台日志输出到此设备目标;在 [consolelog] 部分下设置。默认为 /dev/stderr,空值使用默认值。

    可用值为:/dev/stdout/dev/stderr/dev/null;或者 Windows 上的 CONNUL

    [DEFAULT]
    logging_folder=
    
    [consolelog]
    destination=/dev/null
  • filename

    类型 字符串

    将日志输出重定向到位于 logging_folder 目录中的名为 filename 的特定文件。它必须定义为文件名而不是文件路径,并且适用于 [logger] 和 [filelog] 部分。

    filename 与 [logger] 一起使用以定义 [filelog] 部分的默认值,它还会将路由器的日志文件从 mysqlrouter.log 更改为这个新值。

    [DEFAULT]
    logging_folder=/path/to/logs/
    
    [logger]
    filename = router_error.log

    如果在 [logger] 下设置了文件名但未使用基于文件的记录器,则路由器不会报告错误。

    filename 与 [filelog] 一起使用

    [DEFAULT]
    logging_folder=/path/to/logs/
    
    [filelog:a]
    filename = a_router_error.log
    
    [filelog:b]
    filename = b_router_error.log

    如果在 [filelog] 下文件名为空或未设置,则使用 [logger] 下的文件名定义;如果在 [logger] 下也未设置文件名,则使用默认日志文件 (mysqlrouter.log)。

    相关地,将控制台输出定向到 /dev/null

    [DEFAULT]
    logging_folder=
    
    [consolelog]
    destination=/dev/null
  • level

    类型 字符串
    默认值 INFO
    有效值

    DEBUG

    NOTE

    INFO

    WARNING

    ERROR

    SYSTEM

    FATAL

    使用 logger 插件记录通知、错误和调试信息。可用的日志级别有 DEBUGNOTEINFO(默认)、WARNINGERRORSYSTEMFATAL。这些值不区分大小写。

    INFO 级别显示所有信息性消息、警告和错误消息。DEBUG 级别显示来自路由器代码的其他诊断信息,包括成功的路由。SYSTEM 包括启动消息等消息。

    [logger]
    level = DEBUG

    输出行为取决于 logging_folder 选项。将 logging_folder 设置为文件夹会将名为 mysqlrouter.log 的日志文件保存到该文件夹。将 logging_folder 设置为空值或不设置它会将日志输出到控制台。它在 [DEFAULT] 部分中设置。

    引导程序使用 --config 接受配置文件并利用记录器级别定义。

  • timestamp_precision

    类型 字符串

    记录器时间戳精度;可用的定义和示例值如下:

    • 秒,sec 或 s: 2019-05-10 12:10:25

    • 毫秒,msec 或 ms: 2019-05-10 12:10:25.428

    • 微秒,usec 或 us: 2019-05-10 12:10:25.428754

    • 纳秒,nsec,ns: 2019-05-10 12:10:25.428754000

  • port

    类型 整数
    默认值 8081

    侦听 HTTP 请求的 TCP 端口;默认为 8081。

  • bind_address

    类型 字符串
    默认值 0.0.0.0

    绑定到 HTTP port 的 IP 地址;默认为 0.0.0.0。

  • static_folder

    类型 字符串

    静态文件请求的基本目录;默认情况下为空。空值表示不提供静态文件。

  • require_realm

    类型 字符串

    [http_auth_realm] 实例的名称。

  • ssl

    类型 整数
    默认值 1
    有效值

    1

    0

    值 1 启用 SSL,0 禁用 SSL。需要支持 TLSv1.2 或更高版本的 TLS 客户端。这在 [http_server] 部分下定义。

  • ssl_cert

    类型 字符串

    证书及其链证书的文件名,采用 PEM 格式;如果 ssl=1 则为必需项。这在 [http_server] 部分下定义。

  • ssl_key

    类型 字符串

    密钥的文件名,采用 PEM 格式;如果 ssl=1 则为必需项。这在 [http_server] 部分下定义。

  • ssl_cipher

    类型 字符串

    密码规范(请参阅 openssl 的“ciphers”列表)。默认为所有已批准密码的逗号分隔列表。未知密码将被静默忽略。如果密码列表为空且 ssl=1,则会失败。这在 [http_server] 部分下定义。

  • ssl_dh_param

    类型 字符串

    从此文件读取 DH 参数,采用 PEM 格式。如果 ssl=1,则默认使用 RFC 5114 中的 dh-param。这在 [http_server] 部分下定义。

  • backend

    类型 字符串
    默认值(Windows) poll
    默认值(其他) linux_epoll
    有效值(Windows) poll
    有效值(其他)

    linux_epoll

    poll

    处理异步操作的 IO 后端。通用的 poll 后端在所有平台上都可用,而每个平台都可以提供替代后端。

    选项包括 poll(所有平台)和 linux_epoll(Linux)。在 Linux 上默认为 linux_epoll

    [io]
    backend=linux_epoll
    threads=32
    注意

    这是多个 backend 选项之一,每个选项都在不同的 [section] 中,具有不同的用途

  • threads

    类型 数字
    默认值 0
    最小值 0
    最大值 1024

    处理连接的 IO 线程数。

    默认为 0(使用所有可用的 CPU 核心/线程),但也接受 1 到 1024 之间的数字。在运行时,系统可能会限制超过此值的上限。

    [io]
    backend=linux_epoll
    threads=32
  • connection_sharing_delay

    类型 数字
    默认值 1
    最小值 0
    最大值 2^63-1

    在空闲服务器连接可供另一个客户端连接重用之前等待的秒数。

    请参阅第 3.4 节“连接共享和重用”

  • connection_sharing

    类型 整数
    默认值 0
    最小值 0
    最大值 1

    是否启用连接共享。

    请参阅第 3.4 节“连接共享和重用”

  • idle_timeout

    类型 数字
    默认值 5
    最小值 1
    最大值 4294967296

    在关闭连接池中的空闲连接之前将其保留的秒数。这在 [connection_pool] 部分中设置,并影响连接池中的所有路由。默认为 5,接受 1 到 4294967296 之间的值。

  • max_idle_server_connections

    类型 数字
    默认值 0
    最小值 0
    最大值 4294967296

    客户端断开连接后在连接池中保持打开的连接数;在 [connection_pool] 部分中设置。默认为 0,表示禁用连接池。

  • client_ssl_session_cache_mode

    类型 布尔值
    默认值 1

    启用或禁用客户端-路由器 TLS 会话的缓存。

    注意

    默认情况下启用。如果未设置此参数,则启用缓存。要禁用缓存,您必须明确定义它。

  • client_ssl_session_cache_size

    类型 整数
    默认值 1024
    最小值 1
    最大值 2^31-1

    定义缓存的最大会话数。如果将新会话添加到缓存导致缓存的会话数超过定义的最大值,则会删除最旧的缓存会话,以便缓存最新的会话。

  • client_ssl_session_cache_timeout

    类型 整数
    默认值 300
    最小值 1
    最大值 84600

    定义会话在缓存中保留的最长时间(以秒为单位)。如果达到超时时间,并且此会话未使用,则会从缓存中删除该会话,并关闭连接。

  • server_ssl_session_cache_mode

    类型 布尔值
    默认值 1

    启用或禁用路由器-服务器 TLS 会话的缓存。

    注意

    默认情况下启用。如果未设置此参数,则启用缓存。要禁用缓存,您必须明确定义它。

  • server_ssl_session_cache_size

    类型 整数
    默认值 1024
    最小值 1
    最大值 2^31-1

    定义缓存的最大会话数。如果将新会话添加到缓存导致缓存的会话数超过定义的最大值,则会删除最旧的缓存会话,以便缓存最新的会话。

  • server_ssl_session_cache_timeout

    类型 整数
    默认值 300
    最小值 1
    最大值 84600

    从服务器 TLS 会话缓存中删除 TLS 会话之前的时间(以秒为单位)。

  • connect_retry_timeout

    类型 整数
    默认值 7
    最小值 1
    最大值 3600

    如果经典连接因瞬态错误(例如 max-connections reached)而失败,MySQL Router 将在定义的秒数后重试连接。根据定义的路由策略重试连接。

    如果未定义 connect_retry_timeout,则默认为 7 秒。如果 connect_retry_timeout 的值定义在有效值范围之外,则 MySQL Router 将无法启动。

    注意

    如果启用了连接共享,则重试的连接将连接到与初始连接尝试相同的服务器。

    如果在进行身份验证后连接因瞬态错误而失败,则仅当客户端-路由器连接是 TLS 加密的或具有公钥时,才能重试连接。

    表 4.17 SSL 模式和重试

    client_ssl_mode

    server_ssl_mode

    支持重试

    PASSTHROUGH

    任何

    DISABLED

    任何

    PREFERRED

    AS_CLIENT

    PREFERRED

    任何其他模式

    REQUIRED

    任何


  • backend

    类型 字符串

    [http_auth_backend] 部分的名称。

    注意

    这是多个 backend 选项之一,每个选项都在不同的 [section] 中,具有不同的用途

  • method

    类型 字符串
    默认值 basic

    HTTP 身份验证方法;默认为 basic。

  • name

    类型 字符串

    呈现给身份验证用户的领域的名称。

  • require

    类型 字符串
    默认值 valid-user

    要求用户使用身份验证后端进行验证;默认为 valid-user,这将启用此检查。

  • backend

    类型 字符串
    默认值 file

    后端实现的名称;可接受的值为 file(默认)或 metadata_cache

    [http_auth_backend:name]
    backend=metadata_cache
    
    [metadata_cache]
    auth_cache_refresh_interval=2
    auth_cache_ttl=-1
    注意

    这是多个 backend 选项之一,每个选项都在不同的 [section] 中,具有不同的用途

  • filename

    类型 字符串

    后端存储文件的名称,相对于 data_folder 目录。

  • cluster_type

    类型 字符串
    有效值

    gr

    rs

    引导 Router 所针对的 AdminAPI 对象的类型,可以是 InnoDB ReplicaSet (rs) 或 InnoDB Cluster (gr)。对于集群集,请使用“gr”。

    引导会评估目标实例,并在生成的配置文件中相应地设置此选项。

  • error_quarantine_interval

    类型 整数
    默认值 1
    最小值 1
    最大值 65535

    定义检查隔离目标连接之间的间隔(以秒为单位)。如果可以建立连接,则目标将移出隔离状态,并可用于连接。

    如果定义了无效值,MySQL Router 将无法启动,并会记录错误。

    例如

            [destination_status]
             error_quarantine_threshold=5
             error_quarantine_interval=20
    注意

    如果在配置文件中未定义,则使用默认值 1。

  • error_quarantine_threshold

    类型 整数
    默认值 1
    最小值 1
    最大值 3600

    定义在 MySQL Router 将目标添加到隔离状态并停止将其用作目标之前,连接到路由目标的连续失败尝试的阈值,直到目标被隔离机制清除。例如,如果设置为 5,则在连续 5 次尝试连接失败后,目标将被隔离。

    如果定义了无效值,MySQL Router 将无法启动,并会记录错误。

    例如

            [destination_status]
             error_quarantine_threshold=5
             error_quarantine_interval=20
    注意

    如果在配置文件中未定义,则使用默认值 1。