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

4.3.2.1 mysqlrouter — 命令列選項

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

啟動 Router 時,您可以選擇性使用 --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 啟動後 Router 使用的 MySQL 使用者帳戶
--account-create 啟動帳戶建立行為
--account-host 用於啟動帳戶的主機模式
--bootstrap 啟動並設定 Router 以使用 MySQL InnoDB 叢集運作
--bootstrap-socket 透過 Unix 網域插槽連線至 MySQL 元資料伺服器,與 --bootstrap 搭配使用
--conf-base-port 用於接聽 Router 連接埠的基本連接埠
--conf-bind-address 路由器接聽插槽應繫結的介面 IP 位址
--conf-skip-tcp 是否停用傳入連線的 TCP 連接埠繫結
--conf-target-cluster 將 target_cluster 元資料選項設定為叢集類型
--conf-target-cluster-by-name 將 target_cluster 元資料選項設定為特定叢集名稱
--conf-use-gr-notifications 啟用群組複寫通知
--conf-use-sockets 是否使用 Unix 網域插槽
--connect-timeout 連線嘗試到元資料伺服器被視為逾時之前的秒數
--directory 為新的 Router 執行個體建立獨立目錄
--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 讀取元資料伺服器的作業被視為逾時之前的秒數
--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 在啟動和正常操作期間連線至元資料伺服器時所需的安全性狀態。類似於 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 將 MySQL Router 移除為 Windows 服務;服務名稱預設為 MySQLRouter
--service 以 Windows 服務身分啟動 MySQL Router
--update-credentials-section 更新區段的認證

mysqlrouter 選項說明
  • --version-V

    命令列格式 --version , -V

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

    $> mysqlrouter --version
    
    MySQL Router v9.0.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 中的 "host:port" 部分,替換為同一部機器上的套接字。

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

    URI:用於從 InnoDB Cluster 擷取元數據資訊的伺服器實例。如果提供的 URI 是唯讀實例,則 MySQL Router 會自動重新連線到 InnoDB Cluster 中的讀寫實例,以便它可以註冊 MySQL Router。

    當您使用 --bootstrap 啟動 MySQL Router 時,如果已存在設定檔,則會重複使用該檔案中現有的 router_id,並執行重新設定程序。設定檔會從頭重新產生,並且會重新建立 MySQL Router 的元數據伺服器帳戶,但名稱相同。

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

    引導程序會建立一個新的 MySQL 使用者帳戶,其中包含隨機產生的密碼,供該特定 MySQL Router 實例使用。MySQL Router 在連線到元數據伺服器和 InnoDB Cluster 時,會使用此帳戶來擷取其目前狀態的資訊。有關此使用者(包括其密碼的儲存方式以及所需的 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 定義中的 "host:port" 部分,替換為指派的套接字名稱,以使用 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 讀取主金鑰的腳本。它也會使用在呼叫 master-key-writer 腳本之前,由 MySQL Router 設定的 ROUTER_ID 環境變數。

    master-key-writermaster-key-reader 選項必須一起使用,而且使用它們表示 master_key_file 選項不得在 mysqlrouter.conf 中定義,因為主金鑰不會寫入 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 的腳本。它也會使用在呼叫 master-key-reader 腳本之前,由 MySQL Router 設定的 ROUTER_ID 環境變數。

    master-key-readermaster-key-writer 選項必須一起使用,而且使用它們表示 master_key_file 選項不得在 mysqlrouter.conf 中定義,因為主金鑰不會寫入 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" 是所需的使用者名稱,而不是使用者 foo 使用密碼 bar

  • --account-create

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

    if-not-exists

    always

    never

    指定帳戶建立原則,以協助防止意外使用錯誤的使用者帳戶進行引導。可能的值包括:

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

    • always:僅當帳戶尚不存在時才引導;並建立它。

    • never:僅當帳戶已存在時才引導;並重複使用它。

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

  • --account-host

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

    MySQL Router 在引導過程中建立的帳戶所使用的主機模式。這是可選的,預設為 '%'。

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

    注意

    路由器不會執行健全性檢查,也不會確保該模式授權路由器連線。

    注意

    引導會透過刪除並重新建立使用者來重複使用現有的路由器帳戶,而此使用者重新建立程序適用於每個主機。

    範例

    # 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] 選項。啟用後,路由器會非同步收到有關大多數叢集變更的通知。如需更多資訊,請參閱 use_gr_notifications。此外,使用此選項會將 ttl=60 和 auth_cache_refresh_interval=60。

  • --pid-file 路徑

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

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

    如果指定了 --bootstrap,則設定 --pid-file 會導致路由器失敗。這與 ROUTER_PID 和 pid_file 組態選項不同,如果在指定 --bootstrap 的情況下,它們會被忽略。

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

  • --report-host

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

    可選擇性地定義路由器的主機名稱,而不是依賴自動偵測來判斷在引導過程中註冊到中繼資料的外部可見主機名稱。

    路由器不會檢查或確認所提供的主機名稱是否可連線,但會使用 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 連接埠號碼
    類型 整數
    預設值 0

    透過為每個引導路由設定 bind_port,用於監聽 TCP 連接埠的基本 (第一個) 值。

    此值用於傳統讀寫路由,而每個額外配置的連接埠值會遞增 1。設定的連接埠順序為傳統讀寫 / 唯讀,然後是 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 位址

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

    修改 bind_address 值,該值由 --bootstrap 在產生的路由器組態檔中設定。預設情況下,引導會為每個路由設定 bind_address=0.0.0.0,而此選項會變更該值。

    注意

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

  • --read-timeout 秒數

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

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

    這會影響引導程序期間的讀取作業,也會透過在產生的 mysqlrouter.conf 中設定相關的 read_timeout 選項來影響正常的 MySQL 路由器作業。

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

  • --connect-timeout 秒數

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

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

    這會影響引導程序期間的連線,也會透過在產生的 mysqlrouter.conf 中設定相關的 connect_timeout 選項來影響正常的 MySQL 路由器作業。

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

  • --user {使用者名稱|使用者 ID}-u {使用者名稱|使用者 ID}

    命令列格式 --user {使用者名稱|使用者 ID},-u {使用者名稱|使用者 ID}
    平台特定 Linux
    類型 字串

    以具有名稱 使用者名稱 或數字使用者 ID 使用者 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 機制,而是根據已知的 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。

  • --force

    命令列格式 --force

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

  • --ssl-mode mode

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

    PREFERRED

    DISABLED

    REQUIRED

    VERIFY_CA

    VERIFY_IDENTITY

    在引導程序期間和連線至中繼資料伺服器時正常運作時使用的 SSL 連線模式。類似於 --ssl-modemysql 用戶端中的使用方式。

    在引導程序期間,Router 建立的所有中繼資料伺服器連線都會使用指定的 SSL 選項。如果組態中未指定 ssl_mode,則會預設為 PREFERRED。在 Router 啟動後的正常運作期間,其中繼資料快取外掛程式會讀取並遵循所有已設定的 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 連線模式。

    在引導程序期間,Router 建立的所有用戶端連線都會使用指定的 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 參數。以 PEM 格式格式化 DH 參數檔案。

  • --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 連線模式。

    在啟動過程中,Router 對伺服器所建立的所有連線都會使用指定的 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

    將 Router 作為 Windows 服務啟動。這是一個私有選項,表示它僅供 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-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。不會檢查連接埠是否可用。