MySQL Router 8.4  /  ...  /  組態檔選項

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 PEM 格式的憑證授權單位 (CA) 憑證檔案路徑 字串
client_ssl_capath 包含 PEM 格式的信任 SSL 憑證授權單位 (CA) 憑證檔案的目錄路徑。 字串
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 PEM 格式的憑證授權單位 (CA) 憑證檔案路徑 字串
server_ssl_capath 包含 PEM 格式的信任 SSL 憑證授權單位 (CA) 憑證檔案的目錄路徑。 字串
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 啟動 Router 時所依據的物件 字串
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] 一起使用 字串
filename 記錄檔名稱;可選擇與 [logger] 和 [filelog] 一起使用 字串
level 記錄等級 字串
timestamp_precision 記錄器時間戳記精確度 字串

HTTP 伺服器選項

表 4.13 [http_server]

選項名稱 描述 類型
bind_address 繫結至 HTTP 連接埠的 IP 位址 字串
port 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]

選項名稱 描述 類型
backend [http_auth_backend] 區段的名稱 字串
method HTTP 驗證方法 字串
name 已驗證使用者的領域名稱 字串
require 需要驗證 字串

表 4.15 [http_auth_backend]

選項名稱 描述 類型
backend 後端類型 字串
filename 後端儲存檔案名稱 字串

表 4.16 [io]

選項名稱 描述 類型
backend IO 後端 字串
threads IO 執行緒計數 數值

MySQL Router 組態檔選項說明

  • access_mode

    類型 字串
    預設值
    有效值 auto

    定義 MySQL Router 如何處理唯讀和讀寫查詢。如果啟用,唯讀查詢會導向至唯讀伺服器,而讀寫查詢則會導向至讀寫伺服器。請參閱第 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 Router 會擷取使用者 router_requires 屬性中定義的值(位於 USER_ATTRIBUTES 資料表中)。

    此屬性必須採用下列格式

            {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

    類型 字串
    預設值 warning
    有效值

    warning

    error

    決定 MySQL Router 如何處理未知的組態選項,例如錯字。

    warning 是預設行為,而引導程式在產生的組態檔中將其定義為 error。Warning 會記錄警告訊息,但不會停止,而 error 表示 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 網域 socket 檔案(如果啟用)等。

    預設情況下,組態檔和日誌檔會寫入到系統範圍的位置,例如 /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
    注意

    這與 [metadata_cache] 區段中定義的 user 定義不同,後者是 MySQL 使用者。

  • ssl_ca

    類型 字串

    SSL CA 檔案的路徑,用於在連線到中繼資料伺服器時驗證伺服器的憑證。

    可以使用 --ssl-ca 啟動選項選擇性設定。

  • ssl_capath

    類型 字串

    包含 SSL CA 檔案的目錄路徑,用於在連線到中繼資料伺服器時驗證伺服器的憑證。

    可以使用 --ssl-capath 啟動選項選擇性設定。

  • ssl_crl

    類型 字串

    SSL CRL 檔案的路徑,用於連線到中繼資料伺服器並驗證其 SSL 憑證時使用。

    可以使用 --ssl-crl 啟動選項選擇性設定。

  • ssl_crlpath

    類型 字串

    包含 SSL CRL 檔案的目錄路徑,用於連線到中繼資料伺服器並驗證其 SSL 憑證時使用。

    可以使用 --ssl-crlpath 啟動選項選擇性設定。

  • tls_version

    類型 字串

    要請求的 TLS 版本,以逗號分隔的清單,例如 'TLSv1.2,TLSv1.3'(如果啟用 SSL)。

    可以使用 --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 選項啟用 Socket,可以使用或不使用 TCP bind_portbind_address 選項指定。範例:

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

    當啟動 MySQL Router 時,如果 Socket 檔案已存在或無法寫入,Router 將會拒絕執行。

    接受相對路徑,並且基於啟動 Router 的目前工作目錄。

    Router 可以同時監聽 TCP Socket 和 Unix Socket。例如,以下 [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 網域 Socket 長度限制是平台特定的,不應超過系統允許的長度。

  • protocol

    類型 字串
    預設值 classic
    有效值

    classic

    x

    由路由外掛程式在連線到目的地 MySQL 伺服器時使用,並且可以設定為 "classic" (預設值) 或 "x" (X Protocol)。

    範例用法

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

    protocol 選項也會影響每個目的地使用的預設連接埠。如果未組態目的連接埠,則 "classic" (預設值) 的預設連接埠為 3306,"x" (X Protocol) 的預設連接埠為 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 Cluster Metadata 伺服器位址,並在 Router 重新啟動時載入它們。此功能透過 --bootstrap 啟用。

    啟動設定會在 mysqlrouter.conf 檔案的 [DEFAULT] 區段中定義 dynamic_state 選項。該值是名為 state.json 的 JSON 檔案的路徑,該檔案在 Router 啟動設定後建立。state.json 會使用 InnoDB Cluster Metadata 伺服器位址和 Group Replication ID(InnoDB Cluster 回傳的 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 後,所有關於哪些伺服器被捨棄的資訊都會遺失,並且所有伺服器都會再次可用。

      • Metadata 快取不支援 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 區段組合設定一個值。

    最大值取決於系統的輪詢(或 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

    為每個執行緒配置的堆疊大小。以 KB 為單位測量,預設值為 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

    auth-cache 重新整理嘗試之間的時間(以秒為單位)。預設為 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 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 類似,此選項僅在啟動時使用根帳戶時才使用。當使用 REQUIRE X509 建立根帳戶時,此選項很有用,因此以根身分登入需要用戶端驗證自身。

  • 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 參數。將 DH 參數檔案格式化為 PEM 格式。

  • 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 metadata 伺服器的 SSL 模式。如果未設定,則預設為 PREFERRED

    當設定為 PREFERRED (預設值) 時,如果未使用 SSL 並且到 metadata 伺服器的連線未加密,則啟動程序會發出警告。

    可用值為 DISABLED、PREFERRED、REQUIRED、VERIFY_CA 和 VERIFY_IDENTITY。與 mysql 用戶端一樣,此值不區分大小寫。

    還有一個用於啟動的執行階段選項;請參閱 --ssl-mode

  • user (MySQL)

    類型 字串

    一個產生的 MySQL 使用者,具有存取 MySQL 伺服器 metadata 結構描述的權限。此使用者的密碼會自動產生並儲存在加密的 金鑰環中。依預設,此金鑰環的加密金鑰儲存在受讀取保護的 主金鑰儲存檔案中,該檔案在設定檔中定義。最常見的是,此使用者和相關密碼會在啟動期間自動產生。相關的命令列選項為 --force-password-validation--password-retries。依預設,產生的密碼會通過 STRONG validate_password 強度驗證。

    密碼完全由路由器管理,永遠不會洩露,並使用執行 MySQL Router 的作業系統帳戶儲存在本機金鑰環系統中。然後,路由器可以使用它連線到 InnoDB Cluster 並擷取目前的拓撲資訊。預設情況下,路由器和 metadata 伺服器之間的會話會使用 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 個隨機的小寫字母數字字元。如果 mysqlrouter.conf 中已存在路由器 ID,則會重複使用它,並且其值不能超過 4294967295 (2^32-1)。

    注意

    此使用者與 [DEFAULT] 區段中定義的 user 定義不同,後者是系統使用者。

    此結構在 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

    啟用 Group Replication 通知。啟用後,Router 會非同步地收到大多數叢集變更的通知。可以在 mysqlrouter.conf 中手動啟用,或是在啟動時使用 --conf-use-gr-notifications 命令列選項啟用。

    當 Router 從 Group Replication 收到以下任何通知時,它會重新整理叢集的中繼資料:

    • group_replication/membership/quorum_loss

    • group_replication/membership/view

    • group_replication/status/role_change

    • group_replication/status/state_change

    注意

    Group Replication 通知功能需要 Router 與每個執行 X Plugin 的執行個體之間建立 X Protocol 連線。如果沒有 X Protocol 連線,則中繼資料的重新整理會按照 ttl 間隔進行,如同未啟用通知功能一樣。

    雖然 Group Replication 通知依賴 X Protocol 連線,但收到的通知會觸發中繼資料重新整理,而此重新整理會使用傳統的 MySQL 通訊協定連線到執行個體。

    啟用後,Group Replication 通知功能允許設定較高的 ttl 值,因為按照 ttl 間隔進行的中繼資料重新整理會成為額外的安全措施,而不是保持叢集狀態資訊更新的主要方式。停用時,建議設定較低的 ttl 值(例如預設的 0.5 秒),以避免頻繁重新連線到執行個體並查詢中繼資料變更所造成的額外負擔。

  • ttl

    類型 數值
    預設值 0.5
    最小值 0
    最大值 3600

    中繼資料快取中資訊的存留時間(以秒為單位)。

    接受整數或浮點數值。粒度限制為毫秒,其中 0.001 等於 1 毫秒。精確度會截斷到支援的範圍;例如 TTL=0.0119 會被視為 11 毫秒。值 0 表示中繼資料快取模組會以緊密迴圈連續查詢中繼資料。

    此值必須小於 auth_cache_refresh_intervalauth_cache_ttl,否則 Router 將無法啟動。

    無論地區設定為何,唯一支援的小數點分隔符號是 '.'(句點),並支援科學記號表示法,例如 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] 區段的預設值,並且也會將 Router 的記錄檔從 mysqlrouter.log 變更為這個新值。

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

    如果 filename 設定在 [logger] 下,但未使用任何以檔案為基礎的記錄器,Router 不會報告錯誤。

    使用 [filelog] 的 filename

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

    如果 [filelog] 下的 filename 為空或未設定,則會使用 [logger] 下的 filename 定義;如果 [logger] 下也沒有設定 filename,則會使用預設的記錄檔 (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 層級會顯示來自 Router 程式碼的其他診斷資訊,包括成功路由。SYSTEM 包含啟動訊息等訊息。

    [logger]
    level = DEBUG

    輸出行為取決於 logging_folder 選項。將 logging_folder 設定為資料夾會將名為 mysqlrouter.log 的記錄檔儲存到該資料夾。將 logging_folder 設定為空值,或不設定,則會將記錄輸出到主控台。它是在 [DEFAULT] 區段中設定。

    啟動程序接受使用 --config 的組態檔,並使用記錄器層級定義。

  • timestamp_precision

    類型 字串

    記錄器時間戳記精確度;可用的定義和範例值如下:

    • second、sec 或 s: 2019-05-10 12:10:25

    • millisecond、msec 或 ms: 2019-05-10 12:10:25.428

    • microsecond、usec 或 us: 2019-05-10 12:10:25.428754

    • nanosecond、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 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

    類型 字串
    預設值 基本

    HTTP 驗證方法;預設為基本。

  • name

    類型 字串

    呈現給驗證使用者的領域名稱。

  • require

    類型 字串
    預設值 有效使用者

    要求使用者通過驗證後端驗證;預設為 valid-user,表示啟用此檢查。

  • backend

    類型 字串
    預設值 檔案

    後端實作的名稱;接受的值為 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。