MySQL Router 8.4  /  ...  /  mysqlrouter — 命令列選項

4.3.2.1 mysqlrouter — 命令列選項

MySQL Router 接受傳遞至 mysqlrouter 的命令列選項,以影響其行為,或根據 InnoDB 叢集啟動路由器。

啟動路由器時,您可以選擇性地使用 --config 來傳遞主要組態檔案的位置(否則會使用預設位置),以及使用 --extra-config 來傳遞額外的組態檔案。

啟動命令列選項會影響啟動 MySQL Router 時所使用的產生檔案和目錄。

mysqlrouter 選項摘要

表格 4.2 一般選項

選項名稱 說明
--conf-set-option 在啟動期間設定產生組態選項的值
--config 從提供的檔案讀取組態選項
--extra-config 在從預設位置或由 --config 選項指定的檔案讀取組態檔案之後,讀取此檔案
--help 顯示說明文字並結束
--pid-file 儲存 PID 檔案的位置
--user 以具有已定義使用者名稱或數值使用者 ID 的使用者身分執行 mysqlrouter
--version 顯示版本資訊並結束

表格 4.3 啟動選項

選項名稱 說明
--account 啟動後由路由器使用的 MySQL 使用者帳戶
--account-create 啟動帳戶建立行為
--account-host 用於啟動帳戶的主機模式
--bootstrap 啟動並設定路由器以使用 MySQL InnoDB 叢集運作
--bootstrap-socket 透過 Unix 網域插槽連線至 MySQL Metadata 伺服器,與 --bootstrap 一起使用
--conf-base-port 用於接聽路由器連接埠的基本連接埠
--conf-bind-address 路由器接聽插槽應繫結的介面 IP 位址
--conf-skip-tcp 是否停用繫結傳入連線的 TCP 連接埠
--conf-target-cluster 將 target_cluster Metadata 選項設定為叢集類型
--conf-target-cluster-by-name 將 target_cluster Metadata 選項設定為特定叢集名稱
--conf-use-gr-notifications 啟用群組複寫通知
--conf-use-sockets 是否使用 Unix 網域插槽
--connect-timeout 連線嘗試 Metadata 伺服器時被視為逾時之前的秒數
--directory 為新的路由器執行個體建立獨立目錄
--disable-rest 停用將 REST API 組態詳細資料產生到產生的 mysqlrouter.conf 檔案中
--disable-rw-split 停用將讀寫分離組態詳細資料產生到產生的 mysqlrouter.conf 檔案中
--force 強制重新設定路由器可能存在的執行個體
--force-password-validation 自動建立使用者帳戶時,不要略過 validate_password 機制
--https-port MySQL Router REST API HTTP 伺服器連接埠
--master-key-reader 傳回 STDOUT 主金鑰的指令碼
--master-key-writer 從 STDIN 讀取主金鑰的指令碼
--name 為路由器執行個體提供符號名稱
--password-retries 用於產生路由器使用者密碼的重試次數
--read-timeout 讀取操作 Metadata 伺服器時被視為逾時之前的秒數
--report-host 路由器的主機名稱;覆寫自動偵測
--strict 啟用啟動嚴格模式

表格 4.4 SSL 選項

選項名稱 說明
--client-ssl-ca PEM 格式的憑證授權單位 (CA) 憑證檔案的路徑
--client-ssl-capath 包含 PEM 格式的信任 SSL 憑證授權單位 (CA) 憑證檔案的目錄路徑。
--client-ssl-cert PEM 格式的 SSL 公開金鑰憑證檔案的路徑,用於加密用戶端到路由器的連線
--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 PEM 格式的 SSL 私密金鑰檔案的路徑名稱,用於加密用戶端到路由器的連線
--client-ssl-mode 控制是否必須加密從用戶端到 MySQL Router 的連線,預設為 PREFERRED (如果未設定)
--server-ssl-ca PEM 格式的憑證授權單位 (CA) 憑證檔案的路徑
--server-ssl-capath 包含 PEM 格式的信任 SSL 憑證授權單位 (CA) 憑證檔案的目錄路徑。
--server-ssl-cipher 伺服器的 SSL 密碼編譯
--server-ssl-crl 包含 PEM 格式的憑證撤銷清單的檔案路徑
--server-ssl-crlpath 包含 PEM 格式的憑證撤銷清單檔案的目錄路徑
--server-ssl-curves 伺服器的 SSL 曲線
--server-ssl-mode 控制是否必須加密從路由器到伺服器的連線。
--server-ssl-verify 驗證伺服器提供給路由器的 SSL 憑證
--ssl-ca SSL 憑證授權單位檔案的路徑,用於驗證伺服器的憑證
--ssl-capath 包含信任 SSL 憑證授權單位憑證檔案的目錄
--ssl-cert 用戶端 SSL 憑證,以在啟動期間協助用戶端驗證
--ssl-cipher 如果啟用 SSL,則允許使用的 SSL 密碼編譯清單,以冒號分隔
--ssl-crl 驗證伺服器憑證時要使用的 SSL CRL 檔案路徑
--ssl-crlpath 驗證伺服器憑證時要使用的包含 SSL CRL 檔案的目錄路徑
--ssl-key 私密 SSL 金鑰,以在啟動期間協助用戶端驗證
--ssl-mode 在啟動期間和正常操作時,連線至 Metadata 伺服器時所需的安全性狀態。類似於 mysql 用戶端中的 --ssl-mode
--tls-version 如果啟用 SSL,則要求使用的 TLS 版本清單,以逗號分隔

表格 4.5 Windows 服務選項

選項名稱 說明
--clear-all-credentials 清除所有儲存的認證
--install-service 將 MySQL Router 安裝為服務,並將其設定為在 Windows 重新啟動時自動啟動;服務名稱預設為 MySQLRouter (僅限 Windows)
--install-service-manual 將 MySQL Router 安裝為可以手動啟動的服務;服務名稱預設為 MySQLRouter (僅限 Windows)
--remove-credentials-section 移除區段的認證
--remove-service 移除做為 Windows 服務的 MySQL Router;服務名稱預設為 MySQLRouter
--service 將 MySQL Router 做為 Windows 服務啟動
--update-credentials-section 更新區段的憑證

mysqlrouter 選項說明
  • --version, -V

    命令列格式 --version , -V

    顯示應用程式的版本號碼和相關資訊,然後結束。例如

    $> mysqlrouter --version
    
    MySQL Router v8.4.0 on Linux (64-bit) (GPL community edition)
  • --help, -?

    命令列格式 --help , -?

    顯示說明和資訊,然後結束。

    --help 選項有一個額外的好處。除了每個選項的說明之外,--help 選項還會顯示用於尋找組態檔的路徑,以及一些預設路徑。以下是 --help 輸出的摘錄,顯示來自 Ubuntu 16.04 機器的範例

    $> mysqlrouter --help
    
    ...
    
    Start MySQL Router.
    
    Configuration read from the following files in the given order (enclosed
    in parentheses means not available for reading):
      (/etc/mysqlrouter/mysqlrouter.conf)
      /home/philip/.mysqlrouter.conf
    Plugin Path:
      /usr/lib/x86_64-linux-gnu/mysqlrouter
    Default Log Directory:
      /var/log/mysqlrouter
    Default Persistent Data Directory:
      /var/lib/mysqlrouter
    Default Runtime State Directory:
      /run/mysqlrouter
    
    Usage: mysqlrouter [-V|--version] [-?|--help]
    ...

    組態區段顯示可用於讀取組態檔的路徑順序。在此情況下,只有第二個檔案可存取。

  • --bootstrap URI, -B URI

    命令列格式 --bootstrap URI, -B URI
    類型 字串

    透過連線到提供的 URI 上的 InnoDB Cluster 元資料伺服器,執行 MySQL Router 引導的主要選項。MySQL Router 會根據從 InnoDB Cluster 元資料伺服器擷取的資訊自行組態。如果需要,系統會提示輸入密碼。如果 URI 中未提供使用者名稱,則會使用預設使用者名稱「root」。如需使用路徑指定伺服器執行個體的相關資訊,請參閱使用類似 URI 的連線字串連線

    注意

    雖然 --bootstrap 接受 TCP/IP 連線的 URI,但使用具有本機 Unix 網域通訊端名稱的 --bootstrap-socket 選項會將傳遞至 --bootstrap 選項的 URI 中的「主機:連接埠」部分取代為同一部電腦上的通訊端。

    預設情況下,引導程序會執行 MySQL Router 的系統範圍組態。只能針對系統範圍操作組態一個 MySQL Router 執行個體。MySQL Router 的系統執行個體的 router_name 為「system」。如果需要其他執行個體,請使用 --directory 選項來建立獨立的 MySQL Router 安裝。

    URI:來自 InnoDB Cluster 的伺服器執行個體,用於擷取元資料資訊。如果提供的 URI 是唯讀執行個體,MySQL Router 會自動重新連線到 InnoDB Cluster 中的讀寫執行個體,以便註冊 MySQL Router。

    如果您在啟動 MySQL Router 時已存在組態檔,並使用 --bootstrap,則會重複使用該檔案中現有的 router_id,並發生重新組態程序。組態檔會從頭開始重新產生,且會重新建立 MySQL Router 的元資料伺服器帳戶,但使用相同的名稱。

    在重新組態程序期間,對現有組態檔所做的所有變更都會被捨棄。若要自訂組態檔並仍然保留自動重新組態 (引導) 的功能,您可以使用 --extra-config 命令列選項來指定在主要組態檔之後讀取的其他組態檔。之所以使用這些組態選項,是因為在主要組態檔之後載入此額外組態檔。

    引導程序會建立新的 MySQL 使用者帳戶,並具有隨機產生的密碼,供該特定的 MySQL Router 執行個體使用。當連線至元資料伺服器和 InnoDB 叢集以擷取有關其目前狀態的資訊時,MySQL Router 會使用此帳戶。如需此使用者 (包括密碼的儲存方式及其所需的 MySQL 權限) 的詳細資訊,請參閱MySQL 使用者選項的文件。

    產生的組態檔名為 mysqlrouter.conf,其位置取決於所組態的執行個體類型、系統和套件。對於系統範圍安裝,產生的組態檔會新增至系統的組態目錄,例如 /etc%PROGRAMDATA%\MySQL\MySQL Router\。執行 mysqlrouter --help 將會顯示此位置。

    如果使用超級使用者 (uid=0) 執行引導,則需要 --user 選項。雖然不建議,但可以強制執行超級使用者,方法是將其名稱當做引數傳遞,例如 --user=root

    執行 --bootstrap 所需的最低 GRANT 權限為

    GRANT CREATE USER ON *.* TO 'bootstrapuser'@'%' WITH GRANT OPTION;
    GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE ON mysql_innodb_cluster_metadata.* TO 'bootstrapuser'@'%';
    GRANT SELECT ON mysql.user TO 'bootstrapuser'@'%';
    GRANT SELECT ON performance_schema.replication_group_members TO 'bootstrapuser'@'%';
    GRANT SELECT ON performance_schema.replication_group_member_stats TO 'bootstrapuser'@'%';
    GRANT SELECT ON performance_schema.global_variables TO 'bootstrapuser'@'%';

    使用 --bootstrap 會將預設值新增至產生的 MySQL Router 組態檔,且其中某些預設值取決於其他條件。以下列出部分會影響產生預設值的條件,其中預設值定義為單獨傳遞 --bootstrap

    表 4.6 會影響預設 --bootstrap 值的條件

    條件 說明
    --conf-base-port

    修改每個連線類型的產生的 bind_port 值。

    預設情況下,產生的 bind_port 值如下:對於傳統協定,讀寫使用 6446,而唯讀使用 6447;對於 X 協定,讀寫使用 6448,而唯讀使用 6449。

    --conf-base-port 設定為 0 會將預設 bind_port 值變更為下列預設值:對於傳統協定,讀寫使用 6446,而唯讀使用 6447;對於 X 協定,讀寫使用 64460,而唯讀使用 64470。

    --conf-use-sockets 插入每個連線類型的 socket 定義。
    --conf-skip-tcp 未定義 TCP/IP 連線定義。
    --directory 影響所有檔案路徑,並產生其他檔案。
    其他 此清單並非詳盡無遺,其他選項和條件也會影響產生的值。

  • --bootstrap-socket socket_name

    命令列格式 --bootstrap-socket socket_name
    平台特定 Linux

    --bootstrap 搭配使用,以使用本機 Unix 網域通訊端而非 TCP/IP 進行引導。--bootstrap-socket 值會將 --bootstrap 定義中的「主機:連接埠」部分取代為指派的通訊端名稱,以使用 Unix 網域通訊端連線到 MySQL 元資料伺服器。這是從中引導的 MySQL 執行個體,且如果使用通訊端,此執行個體必須位於同一部電腦上。如需有關引導運作方式的更多詳細資料,請參閱 --bootstrap

    此選項與 --conf-use-sockets 命令列選項不同,後者會在引導程序期間設定 socket 組態檔選項。

    此選項在 Windows 上不可用。

  • --directory dir_path, -d dir_path

    命令列格式 --directory dir_path, -d dir_path
    類型 字串

    指定會在定義的目錄中建立獨立的 MySQL Router 安裝,而不是組態系統範圍的路由器執行個體。這也允許在同一個系統上建立多個路由器執行個體。

    Router 的獨立目錄結構為

    $path/start.sh
    $path/stop.sh
    $path/mysqlrouter.pid
    $path/mysqlrouter.conf
    $path/mysqlrouter.key
    $path/run
    $path/run/keyring
    $path/data
    $path/log
    $path/log/mysqlrouter.log

    如果指定此選項,則金鑰環檔案會儲存在該執行個體的執行階段狀態目錄下,位於指定目錄中的 run/ 下,而非系統範圍的執行階段狀態目錄。

    如果也啟用 --conf-use-sockets,則產生的通訊端檔案也會新增至此目錄。

  • --master-key-writer

    命令列格式 --master-key-writer file_path
    類型 字串

    此選用的引導選項接受從 STDIN 讀取主金鑰的指令碼。它也會使用 MySQL Router 在呼叫 master-key-writer 指令碼之前設定的 ROUTER_ID 環境變數。

    必須一起使用 master-key-writermaster-key-reader 選項,且使用它們表示 mysqlrouter.conf 中不得定義 master_key_file 選項,因為主金鑰不會寫入 mysqlrouter.key 主金鑰檔案。

    這也會寫入產生的 MySQL Router 組態檔中,作為 master-key-writer [DEFAULT] 選項。

    我們的範例中使用的名為 writer.sh 的 bash 指令碼的範例內容

    #!/bin/bash
    
    KID_=$(keyctl padd user ${ROUTER_ID} @us <&0)

    範例用法

    $> mysqlrouter --bootstrap=127.0.0.1:3310 --master-key-reader=./reader.sh 
      --master-key-writer=./writer.sh

    這也會影響產生的 mysqlrouter.conf,例如

    [DEFAULT]
    ...
    master-key-reader=reader.sh
    master-key-writer=writer.sh
  • --master-key-reader

    命令列格式 --master-key-reader file_path
    類型 字串

    此選用的引導選項接受將主金鑰寫入 STDOUT 的指令碼。它也會使用 MySQL Router 在呼叫 master-key-reader 指令碼之前設定的 ROUTER_ID 環境變數。

    必須一起使用 master-key-readermaster-key-writer 選項,且使用它們表示 mysqlrouter.conf 中不得定義 master_key_file 選項,因為主金鑰不會寫入 mysqlrouter.key 主金鑰檔案,而是使用此選項指令碼提供的值。

    這也會寫入產生的 MySQL Router 組態檔中,作為 master-key-reader [DEFAULT] 選項。

    我們的範例中使用的名為 reader.sh 的 bash 指令碼的範例內容

    #!/bin/bash
    
    KID_=$(keyctl search @us user ${ROUTER_ID} 2>/dev/null)
    if [ ! -z $KID_ ]; then
      keyctl pipe $KID_
    fi

    範例用法

    $> mysqlrouter --bootstrap=127.0.0.1:3310 --master-key-reader=./reader.sh 
      # Or, multiple hosts--master-key-writer=./writer.sh

    這也會影響產生的 mysqlrouter.conf,例如

    [DEFAULT]
    ...
    master-key-reader=reader.sh
    master-key-writer=writer.sh
  • --strict

    命令列格式 --strict
    類型 字串

    啟用嚴格模式,例如,如果提供的使用者未通過檢查,會使引導 --account 使用者驗證檢查停止引導程序,而非僅發出警告並繼續。

  • --account

    命令列格式 --account 使用者名稱
    類型 字串

    一個用於指定要使用的 MySQL 使用者的啟動選項,它會重複使用現有的 MySQL 使用者帳戶或建立一個新的帳戶;其行為由相關的 --account-create 選項控制。

    使用 --account 時,會優先考量易於管理而非易於部署,因為多個路由器可能共用同一個帳戶,且使用者名稱和密碼是手動定義,而非自動產生。

    無論密碼是否在金鑰環中可用,設定此選項都會觸發此帳戶的密碼提示。

    在未傳遞 --account 的情況下啟動,不會重新建立現有的 MySQL 伺服器帳戶。

    使用此選項會假設使用者具有足夠的路由器存取權限,因為啟動程序不會嘗試將遺失的授權新增至現有帳戶。啟動程序會驗證權限,並將失敗檢查的資訊輸出到主控台。除非同時使用選用的 --strict 選項,否則啟動程序會繼續進行,即使這些檢查失敗也一樣。範例所需的權限

    GRANT USAGE ON *.* TO `theuser`@`%`
    GRANT SELECT, EXECUTE ON `mysql_innodb_cluster_metadata`.* TO `theuser`@`%`
    GRANT INSERT, UPDATE, DELETE ON `mysql_innodb_cluster_metadata`.`routers` TO `theuser`@`%`
    GRANT INSERT, UPDATE, DELETE ON `mysql_innodb_cluster_metadata`.`v2_routers` TO `theuser`@`%`
    GRANT SELECT ON `performance_schema`.`global_variables` TO `theuser`@`%`
    GRANT SELECT ON `performance_schema`.`replication_group_member_stats` TO `theuser`@`%`
    GRANT SELECT ON `performance_schema`.`replication_group_members` TO `theuser`@`%`

    不接受從命令列傳入的密碼。例如,傳入「foo:bar」會假設「foo:bar」是所需的使用者名稱,而不是密碼為 bar 的使用者 foo

  • --account-create

    命令列格式 --account-create 行為
    類型 字串
    預設值 if-not-exists
    有效值

    if-not-exists

    always

    never

    指定帳戶建立原則,以協助防止不小心使用錯誤的使用者帳戶啟動。可能的值為:

    • if-not-exists(預設):無論如何都啟動;如果帳戶存在,則重複使用該帳戶,否則建立該帳戶。

    • always:僅在帳戶不存在時啟動,並建立該帳戶。

    • never:僅在帳戶已存在時啟動,並重複使用該帳戶。

    此選項需要同時使用 --account 選項,且不能使用 --account-host 選項。

  • --account-host

    命令列格式 --account-host host_pattern
    類型 字串
    預設值 %

    由 MySQL Router 在啟動程序期間建立的帳戶所使用的主機模式。此為選用項目,預設值為 '%'。

    多次傳遞此選項以定義多個模式,在此情況下,產生的 MySQL 帳戶會使用相同的密碼。

    注意

    Router 不會執行健全性檢查,也不會確保模式授權 Router 進行連線。

    注意

    啟動會透過捨棄並重新建立使用者來重複使用現有的 Router 帳戶,且此使用者重新建立程序會套用至每個主機。

    範例

    # One host
    $> mysqlrouter --bootstrap localhost:3310 --account-host host1
    
    # Or, multiple hosts
    $> mysqlrouter --bootstrap localhost:3310 --account-host host1 --account-host host2 
      --account-host host3
  • --conf-use-sockets

    命令列格式 --conf-use-sockets
    平台特定 Linux

    啟用本機 Unix 網域套接字。

    此選項在啟動時使用,啟用此選項會將 socket 選項新增至產生的組態檔。

    產生的套接字檔案名稱取決於 protocol 選項。在啟用傳統通訊協定時,讀寫連線的檔案名稱為 mysql.sock,而唯讀連線的檔案名稱為 mysqlro.sock。在啟用 X 通訊協定時,讀寫連線的檔案名稱為 mysqlx.sock,而唯讀連線的檔案名稱為 mysqlxro.sock

    此選項在 Windows 上不可用。

  • --conf-use-gr-notifications

    命令列格式 --conf-use-gr-notifications

    在啟動期間啟用 use_gr_notifications [metadata_cache] 選項。啟用後,Router 會非同步收到關於大多數叢集變更的通知。如需詳細資訊,請參閱 use_gr_notifications。此外,使用此選項會將 ttl 設定為 60,並將 auth_cache_refresh_interval 設定為 60。

  • --pid-file path

    命令列格式 --pid-file 路徑
    類型 字串

    設定 PID 檔案的位置。可以透過三種不同的方式設定(依優先順序):此 --pid-file 命令列選項、在 Router 的組態檔中設定 pid_file,或定義 ROUTER_PID 環境變數。

    如果指定 --bootstrap,則設定 --pid-file 會導致 Router 失敗。這與 ROUTER_PID 和 pid_file 組態選項不同,如果指定 --bootstrap,則會忽略這些選項。

    如果未指定 --bootstrap,則下列情況會導致 Router 失敗:--pid-file 已存在、pid_file 或 ROUTER_PID 已設定但為空,或 Router 無法寫入 PID 檔案。

  • --report-host

    命令列格式 --report-host 主機名稱
    類型 字串

    選擇性地定義 Router 的主機名稱,而不是依賴自動偵測來判斷在啟動程序期間向中繼資料註冊的外部可見主機名稱。

    Router 不會檢查或確認所提供的主機名稱是否可連線,但會使用 RFC 1123 來驗證主機名稱,並使用 RFC 2181 來驗證位址。

    所提供的主機名稱會寫入 MySQL InnoDB 叢集中繼資料儲存區的 mysql_innodb_cluster_metadata.hosts 表格中的 host_name 欄位。

  • --conf-skip-tcp

    命令列格式 --conf-skip-tcp
    平台特定 Linux

    略過用於接聽連入連線的 TCP 連接埠的組態。另請參閱 --conf-use-sockets

    此選項在 Windows 上不可用。

  • --conf-base-port port_num

    命令列格式 --conf-base-port port_num
    類型 整數
    預設值 0

    用於設定每個啟動路由的 bind_port 的接聽 TCP 連接埠所使用的基礎(第一個)值。

    此值用於傳統讀寫路由,且每個額外配置的連接埠都會遞增一。設定的連接埠順序為傳統讀寫/唯讀,然後是 X 讀寫/唯讀。

    --conf-base-port 設定為 0 會將預設 bind_port 值變更為下列預設值,如下所示:對於傳統通訊協定,讀寫使用 6446,唯讀使用 6447,對於 X 通訊協定,讀寫使用 64460,唯讀使用 64470。

    範例用法

    # Example without --conf-base-port
    $> mysqlrouter --bootstrap root@localhost:3310
    ...
    Classic MySQL protocol connections to cluster 'devCluster':
    - Read/Write Connections: localhost:6446
    - Read/Only Connections: localhost:6447
    
    X protocol connections to cluster 'devCluster':
    - Read/Write Connections: localhost:6448
    - Read/Only Connections: localhost:6449
    
    # Example demonstrating --conf-base-port set to 0
    $> mysqlrouter --bootstrap root@localhost:3310 --conf-base-port 0
    ...
    Classic MySQL protocol connections to cluster 'devCluster':
    - Read/Write Connections: localhost:6446
    - Read/Only Connections: localhost:6447
    
    X protocol connections to cluster 'devCluster':
    - Read/Write Connections: localhost:64460
    - Read/Only Connections: localhost:64470
  • --conf-bind-address address

    命令列格式 --conf-bind-address 位址
    類型 字串
    預設值 0.0.0.0

    修改由 --bootstrap 在產生的 Router 組態檔中設定的 bind_address 值。依預設,啟動會將每個路由的 bind_address 設定為 0.0.0.0,而此選項會變更該值。

    注意

    如果未定義 bind_address,預設 bind_address 值為 127.0.0.1

  • --read-timeout num_seconds

    命令列格式 --read-timeout 秒數
    類型 整數
    預設值 30

    讀取中繼資料伺服器的作業被視為逾時之前的秒數。

    這會影響啟動程序期間的讀取作業,並透過設定產生的 mysqlrouter.conf 中相關的 read_timeout 選項,來影響一般的 MySQL Router 作業。

    此選項設定於 [DEFAULT] 命名空間下。

  • --connect-timeout num_seconds

    命令列格式 --connect-timeout 秒數
    類型 整數
    預設值 30

    嘗試連線至中繼資料伺服器被視為逾時之前的秒數。

    這會影響啟動程序期間的連線,並透過設定產生的 mysqlrouter.conf 中相關的 connect_timeout 選項,來影響一般的 MySQL Router 作業。

    有兩個 connect_timeout 變體。中繼資料伺服器變體定義於 [DEFAULT] 命名空間下,而 MySQL 伺服器變體定義於 [routing] 命名空間下。

  • --user {user_name|user_id}, -u {user_name|user_id}

    命令列格式 --user {user_name|user_id}, -u {user_name|user_id}
    平台特定 Linux
    類型 字串

    以名稱為 user_name 或數值使用者 ID user_id 的使用者身分執行 mysqlrouter使用者在此內容中是指系統登入帳戶,而不是授權表格中列出的 MySQL 使用者。在啟動時,所有產生的檔案都由此使用者所擁有,且這也會設定相關的 user 選項。

    此系統 user 定義於組態檔的 [DEFAULT] 命名空間下。如需其他資訊,請參閱 user 選項的文件,其中 --user 會進行組態設定。

    如果以超級使用者 (uid=0) 身分執行啟動,則需要 --user 選項。雖然不建議這麼做,但可以透過傳遞其名稱作為引數(例如 --user=root)來強制超級使用者執行。

    此選項在 Windows 上不可用。

  • --name router_name

    命令列格式 --name router_name
    類型 字串
    預設值 系統

    在初始啟動時,指定獨立 Router 執行個體的符號名稱。此選項為選用,並與 --directory 搭配使用。在建立多個執行個體時,名稱必須是唯一的。

  • --force-password-validation

    命令列格式 --force-password-validation
    平台特定 Linux

    依預設,MySQL Router 會略過 MySQL 伺服器的 validate_password 機制,而是 Router 會根據已知的 validate_password 預設設定產生並使用強式密碼。這是因為 validate_password 可由使用者組態設定,而 Router 無法考量不尋常的自訂設定。

    此選項確保產生的密碼不會跳過密碼驗證 (validate_password),預設為停用。

  • --password-retries num_retries

    命令列格式 --password-retries num_retries
    類型 整數
    預設值 20
    最小值 1
    最大值 10000

    指定當使用密碼驗證規則建立使用者帳戶時,MySQL Router 應嘗試產生密碼的次數。預設值為 20。有效範圍為 1 到 10000。

    失敗的最可能原因是由於自訂的 validate_password 設定具有不尋常的要求,例如至少 50 個字元的長度。在該失敗情境中,--force-password-validation 設定為 true,和/或停用了 mysql_native_password MySQL 伺服器外掛程式(此外掛程式允許略過驗證)。

  • --force

    命令列格式 --force

    強制在主機上重新設定先前設定的路由器執行個體。

  • --ssl-mode mode

    命令列格式 --ssl-mode mode
    類型 字串
    預設值 PREFERRED
    有效值

    PREFERRED

    DISABLED

    REQUIRED

    VERIFY_CA

    VERIFY_IDENTITY

    在連線至中繼資料伺服器時,於啟動和正常操作期間使用的 SSL 連線模式。類似於 --ssl-modemysql 用戶端中的用法。

    在啟動期間,路由器與中繼資料伺服器之間的所有連線都會使用指定的 SSL 選項。如果未在設定中指定 ssl_mode,則預設為 PREFERRED。在正常操作期間,路由器啟動後,其中繼資料快取外掛程式會讀取並遵守所有設定的 SSL 設定。

    當設定為預設值 (PREFERRED) 以外的值時,會在產生的設定檔中 [metadata_cache] 區段下插入 ssl_mode 項目。

    可用的值為 DISABLED、PREFERRED、REQUIRED、VERIFY_CA 和 VERIFY_IDENTITY。PREFERRED 為預設值。與 mysql 用戶端相同,此值不區分大小寫。

    設定檔的對等項目會在 ssl_mode 單獨說明。

  • --ssl-cert file_path

    命令列格式 --ssl-cert file_path
    類型 字串
    預設值

    PEM 格式的 SSL 公開金鑰憑證檔案的路徑名稱。這用於在啟動過程中方便用戶端驗證。這直接符合並使用 MySQL 用戶端的 --ssl-cert 選項的功能。

    --ssl-key 相同,此選項僅在啟動期間使用,該啟動使用 root 帳戶。當使用 REQUIRE X509 建立 root 帳戶時,這很有用,因此以 root 身分登入需要用戶端自行驗證。

  • --ssl-key file_path

    命令列格式 --ssl-key file_path
    類型 字串

    PEM 格式的 SSL 私密金鑰檔案的路徑名稱。這用於在啟動過程中方便用戶端驗證。這直接符合並使用 MySQL 用戶端的 --ssl-key 選項的功能。

    --ssl-cert 相同,此選項僅在啟動過程中使用,該啟動使用 root 帳戶。當使用 REQUIRE X509 建立 root 帳戶時,這很有用,因此以 root 身分登入需要用戶端自行驗證。

  • --ssl-cipher ciphers

    命令列格式 --ssl-cipher ciphers
    類型 字串
    預設值

    如果啟用 SSL,則允許的 SSL 加密清單 (以冒號「:」分隔)。

  • --tls-version versions

    命令列格式 --tls-version versions
    類型 字串
    預設值

    如果啟用 SSL,則要請求的 TLS 版本清單 (以逗號「,」分隔)。

  • --ssl-ca file_path

    命令列格式 --ssl-ca file_path
    類型 字串
    預設值

    用來驗證伺服器憑證的 SSL CA 檔案路徑。

  • --ssl-capath dir_path

    命令列格式 --ssl-capath dir_path
    類型 字串
    預設值

    包含用來驗證伺服器憑證的 SSL CA 檔案的目錄路徑。

  • --ssl-crl file_path

    命令列格式 --ssl-crl file_path
    類型 字串
    預設值

    驗證伺服器憑證時要使用的 SSL CRL 檔案路徑。

  • --ssl-crlpath dir_path

    命令列格式 --ssl-crlpath dir_path
    類型 字串
    預設值

    包含驗證伺服器憑證時要使用的 SSL CRL 檔案的目錄路徑。

  • --client-ssl-mode mode

    命令列格式 --client-ssl-mode
    類型 字串
    預設值 PREFERRED
    有效值

    PREFERRED

    DISABLED

    PASSTHROUGH

    REQUIRED

    在啟動和正常操作期間,於 MySQL Router 和用戶端之間連線時使用的 SSL 連線模式。

    在啟動期間,路由器與用戶端之間的所有連線都會使用指定的 SSL 選項。如果未在設定中指定 client_ssl_mode,則預設為 PREFERRED

    設定檔的對等項目會在 client_ssl_mode 單獨說明。

  • --client-ssl-cert file_path

    命令列格式 --client-ssl-cert file_path
    類型 字串
    預設值

    PEM 格式的 SSL 公開金鑰憑證檔案的路徑名稱。這用於在啟動過程中方便用戶端驗證。

    --client-ssl-key 相同,此選項僅在啟動期間使用,該啟動使用 root 帳戶。當使用 REQUIRE X509 建立 root 帳戶時,這很有用,因此以 root 身分登入需要用戶端自行驗證。

  • client-ssl-curves

    命令列格式 --client-ssl-curves
    類型 字串

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

  • --client-ssl-key file_path

    命令列格式 --client-ssl-key file_path
    類型 字串

    PEM 格式的 SSL 私密金鑰檔案的路徑名稱。這用於在啟動過程中方便用戶端驗證。

    --client-ssl-cert 相同,此選項僅在啟動過程中使用,該啟動使用 root 帳戶。當使用 REQUIRE X509 建立 root 帳戶時,這很有用,因此以 root 身分登入需要用戶端自行驗證。

  • --client-ssl-cipher ciphers

    命令列格式 --client-ssl-cipher
    類型 字串

    如果啟用 SSL,則允許的 SSL 加密清單 (以冒號「:」分隔)。

  • client-ssl-dh-params

    命令列格式 --client-ssl-dh-params=filepath
    類型 字串

    DH 參數檔案的檔名。如果指定且不為空,則會使用此檔案中的 DH 參數,而不是內部預設的 DH 參數。將 DH 參數檔案格式化為 PEM 格式。

  • --client-ssl-ca file_path

    命令列格式 --client-ssl-ca file_path
    類型 字串
    預設值

    用來驗證伺服器憑證的 SSL CA 檔案路徑。

  • --client-ssl-capath dir_path

    命令列格式 --client-ssl-capath dir_path
    類型 字串
    預設值

    包含用來驗證伺服器憑證的 SSL CA 檔案的目錄路徑。

  • --client-ssl-crl file_path

    命令列格式 --client-ssl-crl file_path
    類型 字串
    預設值

    驗證伺服器憑證時要使用的 SSL CRL 檔案路徑。

  • --client-ssl-crlpath dir_path

    命令列格式 --client-ssl-crlpath dir_path
    類型 字串
    預設值

    包含驗證伺服器憑證時要使用的 SSL CRL 檔案的目錄路徑。

  • --server-ssl-mode mode

    命令列格式 --server-ssl-mode
    類型 字串
    預設值 PREFERRED
    有效值

    AS_CLIENT

    DISABLED

    PREFERRED

    REQUIRED

    在啟動和正常操作期間,於 MySQL Router 和伺服器之間連線時使用的 SSL 連線模式。

    在啟動期間,路由器與伺服器之間的所有連線都會使用指定的 SSL 選項。如果未在設定中指定 server_ssl_mode,則預設為 PREFERRED

    組態檔的等效選項已在 server_ssl_mode 中另行說明。

  • --server-ssl-cipher ciphers

    命令列格式 --server-ssl-cipher
    類型 字串

    如果啟用 SSL,則允許的 SSL 加密清單 (以冒號「:」分隔)。

  • --server-ssl-ca file_path

    命令列格式 --server-ssl-ca file_path
    類型 字串
    預設值

    用來驗證伺服器憑證的 SSL CA 檔案路徑。

  • --server-ssl-capath dir_path

    命令列格式 --server-ssl-capath dir_path
    類型 字串
    預設值

    包含用來驗證伺服器憑證的 SSL CA 檔案的目錄路徑。

  • --server-ssl-crl file_path

    命令列格式 --server-ssl-crl file_path
    類型 字串
    預設值

    驗證伺服器憑證時要使用的 SSL CRL 檔案路徑。

  • --server-ssl-crlpath dir_path

    命令列格式 --server-ssl-crlpath dir_path
    類型 字串
    預設值

    包含驗證伺服器憑證時要使用的 SSL CRL 檔案的目錄路徑。

  • server-ssl-curves

    命令列格式 --server-ssl-curves
    類型 字串

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

  • --server-ssl-verify string

    命令列格式 --server-ssl-verify
    類型 字串
    預設值 DISABLED
    有效值

    DISABLED

    VERIFY_CA

    VERIFY_IDENTITY

    驗證伺服器提供給路由器的 SSL 憑證

    • DISABLED:如果伺服器在交握期間未提供憑證,則連線會失敗。

    • VERIFY_CA:如果伺服器的憑證與 MySQL Router 信任的 CA 不符,則連線會失敗。

    • VERIFY_IDENTITY:如果伺服器的憑證與 MySQL Router 信任的 CA 不符,或伺服器憑證的主體與 MySQL Router 連線的主機名稱或 IP 位址不符,則連線會失敗。

  • --config file_path, -c file_path

    命令列格式 --config file_path, -c file_path

    用於提供要使用的組態檔的路徑和檔名。如果您想要使用位於預設位置以外之資料夾中的組態檔,請使用此選項。

    --bootstrap 一起使用時,如果組態檔已存在,且產生的組態檔內容與原始檔不同,則會儲存目前檔案的複本,並附加 .bak 副檔名。現有的 .bak 檔案會被覆寫。

  • --extra-config file_path, -a file_path

    命令列格式 --extra-config file_path, -a file_path

    用於提供要使用的選用性其他組態檔。如果您想要將組態檔分割成兩個部分以進行測試、在同一部電腦上執行多個應用程式執行個體等,請使用此選項。

    此組態檔會在主要組態檔之後讀取。如果有衝突(在多個組態檔中設定了選項),則會使用最後載入的檔案中的值。

  • --install-service

    命令列格式 --install-service [service_name]
    平台特定 Windows

    將 Router 安裝為 Windows 服務,該服務會在 Windows 啟動時自動啟動。服務名稱預設為 MySQLRouter

    此安裝程序不會驗證透過 --config 傳遞的組態檔。

    此選項僅適用於 Windows。

  • --install-service-manual

    命令列格式 --install-service-manual [service_name]
    平台特定 Windows

    將 MySQL Router 安裝為可手動啟動的 Windows 服務。服務名稱預設為 MySQLRouter

    此選項僅適用於 Windows。

  • --remove-service

    命令列格式 --remove-service [service_name]
    平台特定 Windows

    移除 Router Windows 服務;服務名稱預設為 MySQLRouter。

    此選項僅適用於 Windows。

  • --service

    命令列格式 --service
    平台特定 Windows

    以 Windows 服務身分啟動 Router。這是一個私人選項,表示它僅供 Windows 服務在以服務身分啟動 Router 時使用。

    此選項僅適用於 Windows。

  • --update-credentials-section

    命令列格式 --update-credentials-section section_name
    平台特定 Windows

    此選項僅適用於 Windows,並參考其密碼保存庫。

  • --conf-target-cluster

    命令列格式 --conf-target-cluster value
    類型 字串
    有效值

    current

    primary

    設定 target_cluster 中繼資料 MySQL Router 選項。接受下列字串之一

    • current:將 target_cluster 設定為包含要進行開機程序的節點的叢集。它會將其定義為叢集的 UUID 值。

      如果這也是主要節點,它不會像 primary 一樣動態追蹤角色變更;而是保持靜態。

    • primary:將 target_cluster 設定為主要叢集,包括在執行階段變更時。

    另請參閱 --config-target-cluster-by-name,其將 target_cluster 設定為特定的靜態叢集名稱。

    注意

    針對 ClusterSet 執行開機程序需要將 cluster_type Router 組態選項設定為 gr

  • --conf-set-option

    命令列格式 --conf-set-option section_name[:optional_section_key].option=value
    類型 字串

    在開機程序期間為產生的組態選項設定值;這可以為任何開機程序選項設定值,例如

    $> mysqlrouter -B 127.0.0.1:5000 \
                   --directory=dir1  \
                   --conf-set-option=logger.level=debug \
                   --conf-set-option=routing:test_rw.max_connect_errors=0 \
                   --conf-set-option=routing:test_ro.max_connect_errors=0

    這些命令會透過將這些選項定義為這樣來變更這些特定選項的預設值

    [logger]
    level=debug
    
    [routing:test_rw]
    ...
    max_connect_errors=0
    ...
    
    [routing:test_ro]
    ...
    max_connect_errors=0
    ...

    --conf-set-option 定義會優先於選項特定的參數來設定特定值。例如,如果在執行開機程序時同時指定 --connect-timeout=X--conf-set-option=DEFAULT.connect_timeout=Y,則產生的組態檔中的 connect_timeout 會設定為 Y

  • --conf-target-cluster-by-name

    命令列格式 --conf-target-cluster-by-name clusterName
    類型 字串

    target_cluster 中繼資料 MySQL Router 選項設定為特定的叢集名稱。

    或者,改為使用 --conf-target-cluster 來指派動態叢集類型,例如主要叢集。

  • --remove-credentials-section section_name

    命令列格式 --remove-credentials-section section_name
    平台特定 Windows

    移除指定區段的認證。

    此選項僅適用於 Windows,並參考其密碼保存庫。

  • --clear-all-credentials

    命令列格式 --clear-all-credentials
    平台特定 Windows

    移除儲存在密碼保存庫中的所有認證,藉此清除密碼保存庫。

    此選項僅適用於 Windows,並參考其密碼保存庫。

  • --disable-rw-split

    命令列格式 --disable-rw-split

    預設情況下,會在開機程序時將 [router:read_write_split] 區段新增至產生的 mysqlrouter.conf;而此參數表示不會新增這些詳細資料。如需其他資訊,請參閱 開機程序

  • --disable-rest

    命令列格式 --disable-rest

    預設情況下,會在開機程序時將 MySQL Router REST API Web 服務功能的組態詳細資料新增至產生的 mysqlrouter.conf 檔案;而此參數表示不會新增這些詳細資料。這不會停用 REST API 功能,因為 REST API 功能稍後可以手動設定(以啟用它)。

  • --https-port

    命令列格式 --https-port value
    類型 整數
    預設值 8443
    最小值 1
    最大值 65535

    選擇性地在開機程序時定義產生的 mysqlrouter.conf 中 [http_server] 區段下 MySQL Router REST API 的 HTTP 伺服器 port。其預設值為 8443。不會檢查連接埠的可用性。