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 在 Router 崩潰時寫入核心檔案 布林值
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 Object 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 會在使用者 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 平台。定義在 Microsoft Windows 上以服務形式執行時,MySQL Router 使用的服務名稱。這可讓您在執行多個 MySQL Router 執行個體之間,以及它們在事件記錄檔中的訊息之間進行區分。

    例如

    [DEFAULT]
    event_source_name = MySQLRouterService
  • logging_folder

    類型 字串
    預設值 $router_basepath

    MySQL Router 記錄檔目錄的路徑。記錄檔名為 mysqlrouter.log,如果此檔案已存在,則會產生或附加至此檔案。

    logging_folder 設定為空值會將訊息傳送至主控台 (stdout)。

    注意

    預設的 logging_folder 值在 MySQL Router 2.1 中從 "" 變更為 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 定義。這與會導致 Router 失敗的 --pid-file 命令列選項不同。

    如果未指定 --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 metadata 伺服器時使用的逾時值。

    使用範例

    [DEFAULT]
    connect_timeout = 5

    可以使用 --connect-timeout--conf-set-option=DEFAULT.connect_timeout 在啟動時設定。

  • read_timeout

    類型 整數
    預設值 30

    MySQL Router 從 MySQL metadata 伺服器讀取時使用的逾時值。預設值為 30 秒。

    使用範例

    [DEFAULT]
    read_timeout = 30
  • destinations

    類型 字串

    提供用於建立連線的主機資訊。它接受以逗號分隔的目標位址清單,或是指向 InnoDB 叢集的 metadata 快取連結。

    使用特定主機的範例用法 (靜態路由)

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

    如果未明確設定目標的埠,則如果 protocol 設定為「classic」或未設定 (預設),則預設埠為 3306;如果 protocol 設定為「x」,則預設埠為 33060。

    使用 InnoDB 叢集 metadata 快取的範例用法

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

    metadata-cache URI 選項為

    • role:決定連線可用的執行個體類型。可接受的值為 PRIMARY、SECONDARY 或 PRIMARY_AND_SECONDARY。

      routing_strategy mysqlrouter.conf 選項定義特定的策略,而預設的 metadata 快取路由策略為 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 叢集 Metadata 伺服器位址,並在重新啟動 Router 時載入它們。此功能由 --bootstrap 啟用。

    啟動會在 [DEFAULT] 區段下的 mysqlrouter.conf 檔案中定義 dynamic_state 選項。該值是名為 state.json 的 JSON 檔案的路徑,該檔案會在啟動 Router 時建立。state.json 會初始化 InnoDB 叢集 Metadata 伺服器位址和群組複寫 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 後,所有關於哪些伺服器被捨棄的知識都會遺失,並且所有伺服器都會再次可用。

      • Metadata 快取不支援 next-available 路由原則,因為 next-available 僅適用於靜態路由。

    role 的預設值和可用組合

    • PRIMARYround-robin 是預設行為 (如果未設定 routing_strategy),而啟動會在產生的 MySQL Router 組態檔案中新增 routing_strategy=first-available。可用的策略值為 first-availableround-robin

    • SECONDARYround-robin 是預設行為 (如果未設定 routing_strategy),而啟動會在產生的 MySQL Router 組態檔案中新增 routing_strategy=round-robin-with-fallback。可用的策略值為 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

    為每個執行緒配置的堆疊大小。以 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 Server 的 max_connect_errors 伺服器系統變數。

    如果應用程式執行頻繁的重新連線,這可能會導致輕微的效能損失,因為 MySQL Router 會嘗試探索是否存在與連線相關的錯誤。

    成功的連線會重設錯誤計數器。

    每個路由都有其自己的封鎖主機清單。封鎖的用戶端會收到 MySQL Server 錯誤碼 1129,錯誤訊息略有不同:「1129: Too many connection errors from fail.example.com」。Router 記錄包含封鎖用戶端的額外資訊,例如:INFO [...] 1 authentication errors for fail.example.com (max 100) WARNING [...] blocking client host 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

    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

    類型 整數
    最大值 4294967295

    MySQL Router ID。

  • server_ssl_cert

    類型 字串
    預設值

    PEM 格式的 SSL 公開金鑰憑證檔案的路徑名稱。這用於在引導程序期間促進伺服器端驗證。

  • server_ssl_key

    類型 字串
    預設值

    用於加密 Router 到伺服器連線的 PEM 格式 SSL 私密金鑰檔案的路徑名稱。另請參閱 第 4.4 節,「TLS 組態」

  • server_ssl_curves

    類型 字串

    預設為安全的 SSL 曲線清單。將此字串格式化為以冒號分隔的曲線名稱清單。

  • server_ssl_cipher

    類型 字串

    預設為安全的 SSL 加密演算法清單。將此字串格式化為以冒號分隔的加密演算法名稱清單。

  • server_ssl_verify

    類型 字串
    預設值 DISABLED
    有效值

    DISABLED

    VERIFY_CA

    VERIFY_IDENTITY

    驗證伺服器向 Router 提供的 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 帳戶。當使用 REQUIRE X509 建立 root 帳戶時,此選項非常有用,因此以 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
    類型 字串
    預設值

    用於加密用戶端到 Router 連線的 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 中繼資料伺服器的 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 強度。

    密碼完全由 Router 管理,且永遠不會公開,並使用作業系統執行 MySQL Router 的帳戶儲存在本機金鑰環系統中。然後,Router 可以使用它來連線到 InnoDB Cluster 並擷取目前的拓撲資訊。預設情況下,Router 和中繼資料伺服器之間的會話會使用 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,則會重複使用該 ID,且其值不能超過 4294967295 (2^32-1)。

    注意

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

  • metadata_cluster

    類型 字串

    InnoDB Cluster 的名稱。

    注意

    用來列出 MySQL InnoDB 叢集名稱的 SQL 查詢:SELECT * FROM mysql_innodb_cluster_metadata.clusters;

  • use_gr_notifications

    類型 整數
    預設值 0
    有效值

    0

    1

    啟用群組複寫通知。啟用後,Router 會以非同步方式收到有關大多數叢集變更的通知。可以在 mysqlrouter.conf 中手動啟用,或者在引導期間使用 --conf-use-gr-notifications 命令列選項啟用。

    當 Router 從群組複寫收到以下任何通知時,它會重新整理叢集中繼資料

    • group_replication/membership/quorum_loss

    • group_replication/membership/view

    • group_replication/status/role_change

    • group_replication/status/state_change

    注意

    群組複製通知功能需要 Router 與每個執行 X Plugin 的實例之間建立 X Protocol 連線。如果 X Protocol 連線不可用,則會以如同未啟用通知功能的方式,依照 ttl 間隔執行中繼資料重新整理。

    儘管群組複製通知依賴 X Protocol 連線,收到的通知會觸發中繼資料重新整理,該重新整理會使用傳統的 MySQL 通訊協定連線至實例。

    啟用時,群組複製通知功能允許較高的 ttl 值,因為依照 ttl 間隔執行的中繼資料重新整理會變成額外的安全措施,而非保持叢集狀態資訊為最新的主要方法。停用時,建議使用較低的 ttl 值(例如預設值 0.5 秒),以避免經常重新連線至實例並查詢中繼資料變更所造成的額外負荷。

  • ttl

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

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

    接受整數或浮點數值。粒度限制為毫秒,其中 0.001 等於一毫秒。精確度會截斷為支援的範圍;例如,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

    如果 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 層級會顯示來自 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 (所有平台)和 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。