啟動時,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 伺服器靜態檔案請求的目錄 | 字串 |
MySQL Router 組態檔選項說明
-
類型 字串 預設值 有效值 auto
定義 MySQL Router 如何處理唯讀和讀寫查詢。如果啟用,唯讀查詢會導向至唯讀伺服器,而讀寫查詢則會導向至讀寫伺服器。請參閱第 3.5 節,〈讀/寫分割〉。
-
類型 整數 預設值 1
最小值 0
最大值 1
唯讀查詢會等待上次寫入的交易。
請參閱第 3.5 節,〈讀/寫分割〉。
-
類型 整數 預設值 1
最小值 0
最大值 4294967295
在回復為讀寫目的地之前,等待唯讀目的地套用寫入交易的最長秒數。
請參閱第 3.5 節,〈讀/寫分割〉。
-
類型 布林值 預設值 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[={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 -
類型 字串 預設值 僅限 Microsoft Windows 平台。定義 MySQL Router 在 Microsoft Windows 上以服務形式執行時所使用的服務名稱。這可讓您在執行多個 MySQL Router 執行個體時,以及在事件記錄檔中的訊息之間進行區分。
例如
[DEFAULT] event_source_name = MySQLRouterService
-
類型 字串 預設值 $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/。 -
類型 字串 預設值 (Windows) 預設值 (其他) /usr/local/lib/mysqlrouter
MySQL Router 外掛程式的路徑。此資料夾必須與 MySQL Router 安裝目錄相符。只有在自訂安裝中,外掛程式不在標準安裝位置時,才應設定此選項。
預設值:
/usr/local/lib/mysqlrouter
-
類型 字串 預設值 (Windows) 預設值 (其他) /run/mysqlrouter
MySQL Router 執行階段檔案的路徑。
預設值:
/run/mysqlrouter
-
命令列格式 --master-key-writer file_path
類型 字串 從 STDIN 讀取主金鑰的指令碼。使用
--master-key-writer
命令列引導選項設定。 -
命令列格式 --master-key-reader file_path
類型 字串 將主金鑰傳回至 STDOUT 的指令碼。使用
--master-key-reader
命令列引導選項設定。 -
類型 字串 預設值 (Windows) 預設值 (其他) /usr/local/etc/mysqlrouter
MySQL Router 組態檔的路徑。
注意config_folder
目前是在編譯時設定。此選項可能會由未來的外掛程式使用,當它們有自己的組態檔時。預設值:
/usr/local/etc/mysqlrouter
-
類型 字串 有效值 (Windows) consolelog
filelog
eventlog
有效值 (其他) consolelog
filelog
syslog
已定義記錄等級所傳送至的接收器 (不同的記錄方法)。
支援的接收器值為:
consolelog
、filelog
、eventlog
(在 Windows 上) 和syslog
(在以 Unix 為基礎的系統上)。使用逗號分隔清單來定義多個值。預設值:如果 "[DEFAULT]" 區段中的
logging_folder
選項不為空,則為filelog
,否則為consolelog
。例如,若要設定記錄器以使用檔案、主控台和事件記錄檔,每個都使用 [logger] 區段中設定的偵錯記錄等級
[logger] level=debug sinks=consolelog,eventlog,filelog
-
類型 字串 預設值 (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
-
類型 字串 預設值 (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
-
類型 字串 預設值 warning
有效值 warning
error
決定 MySQL Router 如何處理未知的組態選項,例如錯字。
warning 是預設行為,而引導程式在產生的組態檔中將其定義為 error。Warning 會記錄警告訊息,但不會停止,而 error 表示 MySQL Router 無法初始化並結束。
[DEFAULT] unknown_config_option=warning
-
類型 字串 以名稱為
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 CRL 檔案的路徑,用於連線到中繼資料伺服器並驗證其 SSL 憑證時使用。
可以使用
--ssl-crl
啟動選項選擇性設定。 -
類型 字串 包含 SSL CRL 檔案的目錄路徑,用於連線到中繼資料伺服器並驗證其 SSL 憑證時使用。
可以使用
--ssl-crlpath
啟動選項選擇性設定。 -
類型 字串 要請求的 TLS 版本,以逗號分隔的清單,例如 'TLSv1.2,TLSv1.3'(如果啟用 SSL)。
可以使用
--tls-version
啟動選項選擇性設定。 -
類型 字串 預設值 127.0.0.1
與可選的
bind_address
選項相關的資訊路由項目可以繫結到網路介面 (NIC)。預設的
bind_address
為 127.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_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
-
平台專用 Linux 類型 字串 使用
socket
選項啟用 Socket,可以使用或不使用 TCPbind_port
和bind_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 長度限制是平台特定的,不應超過系統允許的長度。
-
類型 字串 預設值 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 檔案的位置。可以使用三種不同的方式設定 (依優先順序):
--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 檔案。 -
類型 整數 預設值 5
最小值 1
最大值 65536
MySQL Router 連線到目的地 MySQL 伺服器時使用的逾時值。此值不能是無限的,並且無效的值會導致組態錯誤。有效範圍介於 1 到 65536 之間。您應該將此值保持較低。
範例用法
[routing] connect_timeout = 5
可以使用
--conf-set-option=routing.connect_timeout
在啟動時設定。 -
類型 整數 預設值 5
MySQL Router 連線到 MySQL 中繼資料伺服器時使用的逾時值。
範例用法
[DEFAULT] connect_timeout = 5
可以使用
--connect-timeout
或--conf-set-option=DEFAULT.connect_timeout
在啟動時設定。 -
類型 整數 預設值 30
MySQL Router 從 MySQL 中繼資料伺服器讀取時使用的逾時值。預設值為 30 秒。
範例用法
[DEFAULT] read_timeout = 30
-
類型 字串 提供建立連線的主機資訊。它接受目的地位址的逗號分隔清單,或是 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 可關閉這些現有的連線。
注意相關地,下列情況會導致連線中斷:主要節點降級為次要節點後,與主要節點的連線,以及與不再屬於叢集的節點的連線。
-
-
類型 字串 此選項追蹤並儲存作用中的 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" }
-
類型 字串 有效值 first-available
next-available
round-robin
round-robin-with-fallback
路由策略定義 MySQL Router 如何選擇要連線的 MySQL 伺服器。
可用的策略
注意本節之後的角色文件描述可用的
role
和routing_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
的預設值和可用的組合PRIMARY
:round-robin
是預設行為(如果未設定 routing_strategy),而啟動設定會將routing_strategy=first-available
新增至產生的 MySQL Router 組態檔。可用的策略值為 first-available 和 round-robin。SECONDARY
:round-robin
是預設行為(如果未設定 routing_strategy),而啟動設定會將routing_strategy=round-robin-with-fallback
新增至產生的 MySQL Router 組態檔。可用的策略值為 first-available、round-robin 和 round-robin-with-fallback。PRIMARY_AND_SECONDARY
:round-robin
是預設行為(如果未設定 routing_strategy)。可用的策略值為 first-available、round-robin。
-
類型 整數 預設值 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]
backend
和threads
組態選項。在
[DEFAULT]
區段中選擇性設定max_connections
會設定每個路由目的地的預設值。 -
類型 整數 預設值 512
最小值 1
最大值 9223372036854775807
Router 處理的客戶端連線最大數量,以協助防止檔案描述符耗盡。
這與 MySQL 伺服器的 max_connections 伺服器系統變數類似。
[DEFAULT] max_total_connections = 512
注意舊版的
max_connections
選項會為每個路由實例設定一個值,例如一個用於唯讀的值,另一個用於唯寫的值。max_total_connections
選項為所有路由實例組合設定一個值。預設值為 512,並且設定在
[DEFAULT]
區段下。 -
類型 整數 預設值 64
最小值 1
最大值 65535
為每個執行緒配置的堆疊大小。以 KB 為單位測量,預設值為 64。
[DEFAULT] thread_stack_size=128
-
類型 整數 設定
net_buffer_length
MySQL 伺服器選項。 -
類型 整數 預設值 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
-
類型 整數 預設值 9
最小值 2
最大值 31536000
這與 MySQL 伺服器的 connect_timeout 伺服器系統變數類似。
預設值為 9,比 MySQL 5.7 的預設值小 1。有效範圍介於 2 到 31536000 之間。
client_connect_timeout = 9
-
類型 數值 預設值 2
最小值 0.001
最大值 3600
auth-cache 重新整理嘗試之間的時間(以秒為單位)。預設為 2。該值必須小於
auth_cache_ttl
且大於ttl
,否則 Router 將無法啟動。如果 http_auth_backend 區段的
backend
選項設定為 metadata_cache,則會套用此選項;這是 Router REST API 功能。 -
類型 數值 預設值 -1
最小值 0.001
最大值 3600
快取失效(如果未重新整理)之前的時間(以秒為單位)。預設為 -1(無限)。該值必須大於
auth_cache_refresh_interval
和ttl
,否則 Router 將無法啟動。如果 http_auth_backend 區段的
backend
選項設定為 metadata_cache,則會套用此選項;這是 Router REST API 功能。 -
類型 整數 最大值(≥ 8.4.1) 4294967295
最大值(8.4.0) 999999
最大值 4294967295
MySQL Router ID。
-
類型 字串 預設值 PEM 格式的 SSL 公開金鑰憑證檔案路徑名稱。此選項用於在啟動過程中促進伺服器端驗證。
-
類型 字串 預設值 PEM 格式的 SSL 私密金鑰檔案路徑名稱,用於加密路由器到伺服器的連線。另請參閱 第 4.4 節,「TLS 配置」。
-
類型 字串 預設為安全的 SSL 曲線清單。將此字串格式化為以冒號分隔的曲線名稱清單。
-
類型 字串 預設為安全的 SSL 加密演算法清單。將此字串格式化為以冒號分隔的加密演算法名稱清單。
-
類型 字串 預設值 DISABLED
有效值 DISABLED
VERIFY_CA
VERIFY_IDENTITY
驗證伺服器向路由器提供的 SSL 憑證。
DISABLED
:如果伺服器在交握過程中未提供憑證,則連線失敗。VERIFY_CA
:如果伺服器的憑證與 MySQL Router 信任的 CA 不符,則連線失敗。VERIFY_IDENTITY
:如果伺服器的憑證與 MySQL Router 信任的 CA 不符,或者伺服器憑證的主題與 MySQL Router 連線的主機名稱或 IP 位址不符,則連線失敗。
-
類型 字串 預設值 AS_CLIENT
有效值 AS_CLIENT
DISABLED
PREFERRED
REQUIRED
在 MySQL Router 和伺服器之間連線時要使用的 SSL 連線模式。另請參閱 第 4.4 節,「TLS 配置」。
-
命令列格式 --server-ssl-ca file_path
類型 字串 預設值 PEM 格式的憑證授權單位 (CA) 憑證檔案路徑名稱。此檔案包含受信任的 SSL 憑證授權單位清單。另請參閱 第 4.4 節,「TLS 配置」。
-
命令列格式 --server-ssl-capath dir_path
類型 字串 預設值 包含 PEM 格式的受信任 SSL 憑證授權單位 (CA) 憑證檔案的目錄路徑名稱。另請參閱 第 4.4 節,「TLS 配置」。
-
命令列格式 --client-ssl-cert file_path
類型 字串 預設值 PEM 格式的 SSL 公開金鑰憑證檔案路徑名稱。此選項用於在啟動過程中促進用戶端驗證。
與
-client_ssl_key
類似,此選項僅在啟動時使用根帳戶時才使用。當使用 REQUIRE X509 建立根帳戶時,此選項很有用,因此以根身分登入需要用戶端驗證自身。 -
命令列格式 --server-ssl-crlpath dir_path
類型 字串 預設值 包含 PEM 格式的憑證撤銷清單檔案的目錄路徑。另請參閱 第 4.4 節,「TLS 配置」。
-
命令列格式 --server-ssl-crl file_path
類型 字串 預設值 包含 PEM 格式的憑證撤銷清單的檔案路徑名稱。另請參閱 第 4.4 節,「TLS 配置」。
-
命令列格式 --client-ssl-key file_path
類型 字串 預設值 PEM 格式的 SSL 私密金鑰檔案路徑名稱,用於加密用戶端到路由器的連線。另請參閱 第 4.4 節,「TLS 配置」。
-
類型 字串 DH 參數檔案的檔案名稱。如果指定且不為空,則會使用此檔案中的 DH 參數,而不是內部預設 DH 參數。將 DH 參數檔案格式化為 PEM 格式。
-
類型 字串 允許用戶端和 MySQL Router 之間使用的曲線,預設為安全的 SSL 曲線清單。將此字串格式化為以冒號分隔的曲線名稱清單。
-
類型 字串 允許用戶端和 MySQL Router 之間使用的加密演算法,預設為安全的 SSL 加密演算法清單。將此字串格式化為以冒號分隔的加密演算法名稱清單。
-
類型 字串 預設值 PREFERRED
有效值 PREFERRED
DISABLED
PASSTHROUGH
REQUIRED
控制從用戶端到 MySQL Router 的連線是否必須加密。另請參閱 第 4.4 節,「TLS 配置」。
-
類型 字串 預設值 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
。 -
類型 字串 一個產生的 MySQL 使用者,具有存取 MySQL 伺服器 metadata 結構描述的權限。此使用者的密碼會自動產生並儲存在加密的 金鑰環中。依預設,此金鑰環的加密金鑰儲存在受讀取保護的 主金鑰儲存檔案中,該檔案在設定檔中定義。最常見的是,此使用者和相關密碼會在啟動期間自動產生。相關的命令列選項為
--force-password-validation
和--password-retries
。依預設,產生的密碼會通過 STRONG validate_password 強度驗證。密碼完全由路由器管理,永遠不會洩露,並使用執行 MySQL Router 的作業系統帳戶儲存在本機金鑰環系統中。然後,路由器可以使用它連線到 InnoDB Cluster 並擷取目前的拓撲資訊。預設情況下,路由器和 metadata 伺服器之間的會話會使用 SSL 加密。
產生的金鑰環檔案儲存在何處取決於啟動的設定方式。對於獨立安裝 (當使用
--directory
時),它會儲存在獨立目錄下的run/
中。對於系統範圍的安裝,它會儲存在系統範圍的執行階段狀態目錄中,並且該路徑是平台特定的。如需其他資訊,請參閱master_key_path
和keyring_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}
。 -
類型 字串 InnoDB Cluster 的名稱。
注意用於列出 MySQL InnoDB 叢集名稱的 SQL 查詢:SELECT * FROM mysql_innodb_cluster_metadata.clusters;
-
類型 整數 預設值 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 秒),以避免頻繁重新連線到執行個體並查詢中繼資料變更所造成的額外負擔。 -
類型 數值 預設值 0.5
最小值 0
最大值 3600
中繼資料快取中資訊的存留時間(以秒為單位)。
接受整數或浮點數值。粒度限制為毫秒,其中 0.001 等於 1 毫秒。精確度會截斷到支援的範圍;例如 TTL=0.0119 會被視為 11 毫秒。值 0 表示中繼資料快取模組會以緊密迴圈連續查詢中繼資料。
此值必須小於
auth_cache_refresh_interval
和auth_cache_ttl
,否則 Router 將無法啟動。無論地區設定為何,唯一支援的小數點分隔符號是 '.'(句點),並支援科學記號表示法,例如 TTL=1.6E-2。
-
類型 字串 預設值 (Windows) CON
預設值 (其他) /dev/stderr
有效值 (Windows) CON
NUL
有效值 (其他) /dev/null
/dev/stderr
/dev/stdout
將主控台記錄輸出直接導向至此裝置目的地;在 [consolelog] 區段下設定。預設值為 /dev/stderr,而空值則使用預設值。
可用的值為:
/dev/stdout
、/dev/stderr
和/dev/null
;或 Windows 上的CON
和NUL
。[DEFAULT] logging_folder= [consolelog] destination=/dev/null
-
類型 字串 將記錄輸出重新導向至位於
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
-
類型 字串 預設值 INFO
有效值 DEBUG
NOTE
INFO
WARNING
ERROR
SYSTEM
FATAL
使用 logger 外掛程式來記錄通知、錯誤和除錯資訊。可用的記錄層級為 DEBUG、NOTE、INFO(預設值)、WARNING、ERROR、SYSTEM 和 FATAL。這些值不區分大小寫。
INFO 層級會顯示所有資訊訊息、警告和錯誤訊息。DEBUG 層級會顯示來自 Router 程式碼的其他診斷資訊,包括成功路由。SYSTEM 包含啟動訊息等訊息。
[logger] level = DEBUG
輸出行為取決於
logging_folder
選項。將logging_folder
設定為資料夾會將名為mysqlrouter.log
的記錄檔儲存到該資料夾。將logging_folder
設定為空值,或不設定,則會將記錄輸出到主控台。它是在 [DEFAULT] 區段中設定。啟動程序接受使用
--config
的組態檔,並使用記錄器層級定義。 -
類型 字串 記錄器時間戳記精確度;可用的定義和範例值如下:
second、sec 或 s
: 2019-05-10 12:10:25millisecond、msec 或 ms
: 2019-05-10 12:10:25.428microsecond、usec 或 us
: 2019-05-10 12:10:25.428754nanosecond、nsec 或 ns
: 2019-05-10 12:10:25.428754000
-
類型 整數 預設值 8081
監聽 HTTP 要求的 TCP 連接埠;預設值為 8081。
-
類型 字串 預設值 0.0.0.0
繫結至 HTTP
port
的 IP 位址;預設值為 0.0.0.0。 -
類型 字串 靜態檔案要求的基底目錄;預設為空。空值表示不提供靜態檔案。
-
類型 字串 [http_auth_realm] 執行個體的名稱。
-
類型 整數 預設值 1
有效值 1
0
值 1 啟用 SSL,而 0 停用 SSL。需要支援 TLSv1.2 或更新版本的 TLS 用戶端。這是定義在 [http_server] 區段下。
-
類型 字串 PEM 格式的憑證及其鏈結憑證的檔案名稱;如果 ssl=1,則為必要。這是定義在 [http_server] 區段下。
-
類型 字串 PEM 格式的金鑰檔案名稱;如果 ssl=1,則為必要。這是定義在 [http_server] 區段下。
-
類型 字串 密碼規格(請參閱 openssl 的 'ciphers' 清單)。預設為以逗號分隔的所有核准密碼清單。不明的密碼會被靜默忽略。如果密碼清單為空且 ssl=1,則會失敗。這是定義在 [http_server] 區段下。
-
類型 字串 從此檔案讀取 PEM 格式的 DH 參數。如果 ssl=1,預設會使用 RFC 5114 中的 dh-param。這是定義在 [http_server] 區段下。
-
類型 字串 預設值 (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
][io] backend
用於非同步作業。[http_auth_realm] backend
定義與特定領域相關聯的後端的自訂名稱[http_auth_backend] backend
驗證後端類型
-
類型 數值 預設值 0
最小值 0
最大值 1024
處理連線的 IO 執行緒數目。
預設值為 0 (使用所有可用的 CPU 核心/執行緒),但也接受介於 1 和 1024 之間的數字。在執行階段,系統可能會將上限限制為超出此值。
[io] backend=linux_epoll threads=32
-
類型 數值 預設值 1
最小值 0
最大值 2^63-1
在閒置的伺服器連線可供其他客戶端連線重複使用前,等待的秒數。
-
類型 整數 預設值 0
最小值 0
最大值 1
是否啟用連線共用。
-
類型 數值 預設值 5
最小值 1
最大值 4294967296
在閒置連線關閉前,將其保留在連線池中的秒數。此設定位於 [connection_pool] 區段中,會影響連線池中的所有路由。預設值為 5,接受介於 1 到 4294967296 之間的值。
-
類型 數值 預設值 0
最小值 0
最大值 4294967296
在客戶端中斷連線後,於連線池中保持開啟的連線數;此設定位於
[connection_pool]
區段中。預設值為 0,表示停用連線池。 -
類型 布林值 預設值 1
啟用或停用用戶端路由器 TLS 工作階段的快取。
注意預設為啟用。若未設定此參數,則會啟用快取。若要停用快取,您必須明確定義它。
-
類型 整數 預設值 1024
最小值 1
最大值 2^31-1
定義快取的工作階段數目上限。如果將新的工作階段加入快取,導致快取的工作階段數目超出定義的上限,則會捨棄最舊的快取工作階段,以允許快取最新的工作階段。
-
client_ssl_session_cache_timeout
類型 整數 預設值 300
最小值 1
最大值 84600
定義工作階段保留在快取中的最長時間 (以秒為單位)。如果達到逾時時間,且此工作階段未被重複使用,則會從快取中移除該工作階段,並關閉連線。
-
類型 布林值 預設值 1
啟用或停用路由器伺服器 TLS 工作階段的快取。
注意預設為啟用。若未設定此參數,則會啟用快取。若要停用快取,您必須明確定義它。
-
類型 整數 預設值 1024
最小值 1
最大值 2^31-1
定義快取的工作階段數目上限。如果將新的工作階段加入快取,導致快取的工作階段數目超出定義的上限,則會捨棄最舊的快取工作階段,以允許快取最新的工作階段。
-
server_ssl_session_cache_timeout
類型 整數 預設值 300
最小值 1
最大值 84600
從伺服器 TLS 工作階段快取中移除 TLS 工作階段之前的時間 (以秒為單位)。
-
類型 整數 預設值 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
任何
是
-
類型 字串 [http_auth_backend]
區段的名稱。注意這是多個
backend
選項之一,每個選項都在不同的[
中,用途不同section
][io] backend
用於非同步作業。[http_auth_realm] backend
定義與特定領域相關聯的後端的自訂名稱[http_auth_backend] backend
驗證後端類型
-
類型 字串 預設值 基本
HTTP 驗證方法;預設為基本。
-
類型 字串 呈現給驗證使用者的領域名稱。
-
類型 字串 預設值 有效使用者
要求使用者通過驗證後端驗證;預設為
valid-user
,表示啟用此檢查。 -
類型 字串 預設值 檔案
後端實作的名稱;接受的值為
file
(預設) 或metadata_cache
。[http_auth_backend:name] backend=metadata_cache [metadata_cache] auth_cache_refresh_interval=2 auth_cache_ttl=-1
注意這是多個
backend
選項之一,每個選項都在不同的[
中,用途不同section
][io] backend
用於非同步作業。[http_auth_realm] backend
定義與特定領域相關聯的後端的自訂名稱[http_auth_backend] backend
驗證後端類型
-
類型 字串 後端儲存檔案的名稱,相對於
data_folder
目錄。 -
類型 字串 有效值 gr
rs
Router 啟動所針對的 AdminAPI 物件類型,即 InnoDB ReplicaSet (rs) 或 InnoDB Cluster (gr)。針對叢集集使用 'gr'。
啟動會評估目標執行個體,並在產生的組態檔中據此設定此選項。
-
類型 整數 預設值 1
最小值 1
最大值 65535
定義隔離目的地連線能力檢查之間的間隔 (秒)。如果連線可行,則會將目的地移出隔離並使其可供連線使用。
如果定義無效值,MySQL Router 將無法啟動,並會記錄錯誤。
例如
[destination_status] error_quarantine_threshold=5 error_quarantine_interval=20
注意如果在組態檔中未定義,則會使用預設值 1。
-
類型 整數 預設值 1
最小值 1
最大值 3600
定義連續嘗試連線至路由目的地的失敗次數上限,然後 MySQL Router 會將目的地新增至隔離區,並停止將其用作目的地,直到隔離機制清除為止。例如,如果設定為 5,則在連續 5 次嘗試連線失敗後,目的地會被隔離。
如果定義無效值,MySQL Router 將無法啟動,並會記錄錯誤。
例如
[destination_status] error_quarantine_threshold=5 error_quarantine_interval=20
注意如果在組態檔中未定義,則會使用預設值 1。