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

4.3.3 配置文件选项

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

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

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

以下表格按节划分,汇总了 MySQL Router 配置文件中定义的 MySQL Router 选项。有关每个选项的详细信息,例如描述和允许值,请参阅这些表格下面的文档。

一般选项

表格 4.7 [DEFAULT]

选项名称 描述 类型
config_folder 配置文件路径 字符串
connect_timeout 连接尝试连接到元数据服务器之前的超时时间(以秒为单位) 整数
core-file 在路由器崩溃时写入核心文件 布尔值
event_source_name 仅限 Microsoft Windows 平台。定义 MySQL Router 在 Microsoft Windows 上作为服务运行时使用的服务名称。 字符串
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 用于跟踪和存储活动 MySQL InnoDB 集群元数据服务器地址的生成 JSON 文件的路径 字符串
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 在回退到读写目标之前,等待只读目标应用写入事务的最大时间(以秒为单位)。 整数

目标状态选项

表格 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 集群名称 字符串
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 身份验证方法 字符串
名称 已认证用户的领域名称 字符串
需要 需要身份验证验证 字符串

表 4.15 [http_auth_backend]

选项名称 描述 类型
后端 后端类型 字符串
文件名 后端存储文件名 字符串

表 4.16 [io]

选项名称 描述 类型
后端 IO 后端 字符串
线程 IO 线程数 数值

MySQL 路由器配置文件选项说明

  • access_mode

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

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

  • wait_for_my_writes

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

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

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

  • wait_for_my_writes_timeout

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

    在回退到读写目标之前,等待只读目标应用写入事务的最大时间(以秒为单位)。

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

  • router_require_enforce

    类型 布尔值
    默认值 0

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

    该属性必须采用以下格式

            {router_require: {value}}

    以下是可能的取值

    • {}: 没有要求。

    • {ssl: true}: MySQL 路由器要求来自客户端的 SSL。

    • {x509: true}: MySQL 路由器要求来自客户端的 SSL 和 x509 证书。

    • {issuer: ""}: MySQL 路由器要求来自客户端的 SSL、x509 证书和证书颁发者。

    • {ssl: true}: MySQL 路由器要求来自客户端的 SSL、x509 证书和证书主体。

  • --core-file

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

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

  • event_source_name

    类型 字符串
    默认值

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

    例如

    [DEFAULT]
    event_source_name = MySQLRouterService
  • logging_folder

    类型 字符串
    默认值 $router_basepath

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

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

    注意

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

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

    [DEFAULT]
    logging_folder = /var/log/mysqlrouter

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

  • plugin_folder

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

    MySQL 路由器插件的路径。此文件夹必须与 MySQL 路由器安装目录匹配。如果您有自定义安装,其中插件不在标准安装位置,则应仅设置此选项。

    默认值: /usr/local/lib/mysqlrouter

  • runtime_folder

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

    MySQL 路由器运行时文件的路径。

    默认值: /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 路由器配置文件的路径。

    注意

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

    默认值: /usr/local/etc/mysqlrouter

  • sinks

    类型 字符串
    有效值(Windows)

    consolelog

    filelog

    eventlog

    有效值(其他)

    consolelog

    filelog

    syslog

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

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

    默认值: 如果 logging_folder 选项在“[DEFAULT]”部分中不为空,则为 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 路由器处理未知配置选项(例如拼写错误)的行为。

    警告 是默认行为,引导将其定义为 错误,在生成的配置文件中。警告会记录警告消息,但不会停止,而错误意味着 MySQL 路由器无法初始化并退出。

    [DEFAULT]
    unknown_config_option=warning
  • user (系统)

    类型 字符串

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

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

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

    MySQL 路由器可以在任何操作系统用户下引导和执行,除了对其自身文件的读写访问权限之外,不需要任何特殊权限。它访问的文件包括插件(读/执行)、配置文件、日志、UNIX 域套接字文件(如果启用)等等。

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

    $> 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 CRL 文件的目录路径,这些文件用于在连接到元数据服务器并验证其 SSL 证书时使用。

    可以使用 --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 激活。

    引导定义了 mysqlrouter.conf 文件中 [DEFAULT] 部分下的 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

    示例 state.json--bootstrap 生成

    {
        "metadata-cache": {
            "group-replication-id": "4b9e817a-0254-11e9-9cc0-080027bb5030",
            "cluster-metadata-servers": [
                "mysql://localhost:3310",
                "mysql://localhost:3320",
                "mysql://localhost: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 只适用于静态路由。

    The 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 Server 的 max_connections 服务器系统变量。

    [routing:mycluster_default_rw]
    max_connections = 512

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

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

    可以选择在 [DEFAULT] 部分设置 max_connections,为每个路由目标设置默认值。

  • max_total_connections

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

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

    这类似于 MySQL Server 的 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 Server 的 max_connect_errors 服务器系统变量。

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

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

    每个路由都有自己被阻止的主机列表。被阻止的客户端会收到 MySQL Server 错误代码 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 Server 的 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

    类型 整数
    最大值 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 file_path
    类型 字符串
    默认值

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

  • server_ssl_capath

    命令行格式 --server-ssl-capath dir_path
    类型 字符串
    默认值

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

  • client_ssl_cert

    命令行格式 --client-ssl-cert file_path
    类型 字符串
    默认值

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

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

  • server_ssl_crlpath

    命令行格式 --server-ssl-crlpath dir_path
    类型 字符串
    默认值

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

  • server_ssl_crl

    命令行格式 --server-ssl-crl file_path
    类型 字符串
    默认值

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

  • client_ssl_key

    命令行格式 --client-ssl-key file_path
    类型 字符串
    默认值

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

  • client_ssl_dh_params

    类型 字符串

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

  • client_ssl_curves

    类型 字符串

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

  • client_ssl_cipher

    类型 字符串

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

  • client_ssl_mode

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

    PREFERRED

    DISABLED

    PASSTHROUGH

    REQUIRED

    控制来自客户端到 MySQL 路由器的连接是否必须加密。另请参阅 第 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

  • user (MySQL)

    类型 字符串

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

    密码完全由路由器管理,从不公开,并存储在使用运行 MySQL 路由器的操作系统帐户的本地密钥环系统中。然后,路由器可以使用它来连接到 InnoDB 集群并检索当前拓扑信息。路由器和元数据服务器之间的会话默认情况下使用 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 中,则会重复使用它,并且其值不能超过 4294967295(2^32-1)。

    注意

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

  • metadata_cluster

    类型 字符串

    InnoDB 集群的名称。

    注意

    列出 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.5s,默认值)以避免频繁地重新连接到实例并查询它们以获取元数据更改的开销。

  • 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] 部分。

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

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

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

    使用 [filelog] 中的 filename

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

    如果 filename 在 [filelog] 下为空或未设置,则使用 [logger] 下的 filename 定义;如果 filename 在 [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

    类型 字符串

    从 PEM 格式的此文件读取 DH 参数。如果 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 路由器将在定义的秒数后重试连接。将根据定义的路由策略重试连接。

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

    注意

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

    如果连接在身份验证后因瞬态错误而失败,则只有在客户端-路由器连接经过 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

    路由器引导至的 AdminAPI 对象的类型,可以是 InnoDB 复制集 (rs) 或 InnoDB 集群 (gr)。对于集群集,请使用“gr”。

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

  • error_quarantine_interval

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

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

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

    例如

            [destination_status]
             error_quarantine_threshold=5
             error_quarantine_interval=20
    注意

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

  • error_quarantine_threshold

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

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

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

    例如

            [destination_status]
             error_quarantine_threshold=5
             error_quarantine_interval=20
    注意

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