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 元数据服务器,与 --bootstrap 结合使用
--conf-base-port 用于监听路由器端口的基准端口
--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 为路由器的新实例创建一个自包含目录
--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 证书颁发机构 (CA) 证书文件的路径,采用 PEM 格式
--client-ssl-capath 包含受信任的 SSL 证书颁发机构 (CA) 证书文件的目录的路径,采用 PEM 格式。
--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
--server-ssl-ca 证书颁发机构 (CA) 证书文件的路径,采用 PEM 格式
--server-ssl-capath 包含受信任的 SSL 证书颁发机构 (CA) 证书文件的目录的路径,采用 PEM 格式。
--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 删除作为 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 集群元数据服务器来执行 MySQL Router 引导的主要选项。MySQL Router 根据从 InnoDB 集群元数据服务器检索到的信息自行配置。如果需要,系统会提示输入密码。如果未在 URI 中提供用户名,则使用默认用户名“root”。有关使用路径指定服务器实例的信息,请参见 使用类似 URI 的连接字符串进行连接

    注意

    虽然 --bootstrap 接受 TCP/IP 连接的 URI,但使用 --bootstrap-socket 选项以及本地 Unix 域套接字名称,会将传递给 --bootstrap 选项的 URI 中的“主机:端口”部分替换为同一台计算机上的套接字。

    默认情况下,引导进程会执行 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 集群以获取有关其当前状态的信息时,将使用此帐户。有关此用户的详细信息,包括其密码的存储方式及其所需的 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

    此选项不同于在引导过程中设置 socket 配置文件选项的 --conf-use-sockets 命令行选项。

    此选项在 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 主密钥文件。

    这也将作为 master-key-writer [DEFAULT] 选项写入生成的 MySQL Router 配置文件。

    示例中使用的名为 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 主密钥文件,而是使用此选项的脚本提供的值。

    这也将作为 master-key-reader [DEFAULT] 选项写入生成的 MySQL Router 配置文件。

    示例中使用的名为 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 username
    类型 字符串

    一个引导选项,用于指定要使用的 MySQL 用户,可以重用现有 MySQL 用户帐户或创建一个新帐户;行为由相关的 --account-create 选项控制。

    使用 --account 时,使用方便管理优先于易于部署,因为多个路由器可以共享同一个帐户,并且用户名和密码是手动定义的,而不是自动生成的。

    设置此选项会触发此帐户的密码提示,无论密钥环中是否有密码可用。

    在不传递 --account 的情况下引导不会重新创建现有的 MySQL 服务器帐户。

    使用此选项假定用户具有对 Router 的足够访问权限,因为引导进程不会尝试向现有帐户添加缺少的授权。引导进程会验证权限,并将失败检查的信息输出到控制台。引导进程会继续执行,尽管出现这些失败检查,除非还使用了可选的 --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 behavior
    类型 字符串
    默认值 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 帐户使用相同的密码。

    注意

    路由器不执行健全性检查,也不确保该模式授权路由器连接。

    注意

    引导通过删除和重新创建用户来重用现有的路由器帐户,并且此用户重新创建过程适用于每个主机。

    示例

    # 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 <em class="replaceable"><code>path</code></em>

    命令行格式 --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 <em class="replaceable"><code>port_num</code></em>

    命令行格式 --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 <em class="replaceable"><code>address</code></em>

    命令行格式 --conf-bind-address 地址
    类型 字符串
    默认值 0.0.0.0

    修改在生成的路由器配置文件中由 --bootstrap 设置的 bind_address 值。默认情况下,引导会为每个路由设置 bind_address=0.0.0.0,此选项会更改该值。

    注意

    如果未定义 bind_address,则默认的 bind_address 值为 <span class="emphasis"><em>127.0.0.1</em></span>。

  • --read-timeout <em class="replaceable"><code>num_seconds</code></em>

    命令行格式 --read-timeout 秒数
    类型 整数
    默认值 30

    在将对元数据服务器的读取操作视为超时之前的秒数。

    这会影响引导过程中的读取操作,还会通过在生成的 mysqlrouter.conf 中设置关联的 read_timeout 选项来影响正常的 MySQL Router 操作。

    此选项在 [DEFAULT] 命名空间下设置。

  • --connect-timeout <em class="replaceable"><code>num_seconds</code></em>

    命令行格式 --connect-timeout 秒数
    类型 整数
    默认值 30

    在将到元数据服务器的连接尝试视为超时之前的秒数。

    这会影响引导过程中的连接,还会通过在生成的 mysqlrouter.conf 中设置关联的 connect_timeout 选项来影响正常的 MySQL Router 操作。

    有两种 <span class="emphasis"><em>connect_timeout</em></span> 变体。元数据服务器变体在 [DEFAULT] 命名空间下定义,而 MySQL 服务器变体在 [routing] 命名空间下定义。

  • --user {<em class="replaceable"><code>user_name</code></em>|<em class="replaceable"><code>user_id</code></em>}, -u {<em class="replaceable"><code>user_name</code></em>|<em class="replaceable"><code>user_id</code></em>}

    命令行格式 --user {用户名|用户 ID}, -u {用户名|用户 ID}
    特定于平台 Linux
    类型 字符串

    以具有名称 <em class="replaceable"><code>user_name</code></em> 或数字用户 ID <em class="replaceable"><code>user_id</code></em> 的用户身份运行 <span class="command"><strong>mysqlrouter</strong></span>。在此上下文中,“<span class="quote">“<span class="quote">用户</span>”</span>”指的是系统登录帐户,而不是授权表中列出的 MySQL 用户。引导时,所有生成的文件都归此用户所有,这也会设置关联的 user 选项。

    此系统 user 在配置文件的 [DEFAULT] 命名空间下定义。有关其他信息,请参阅 user 选项的文档,--user 会对其进行配置。

    如果以超级用户 (uid=0) 身份执行引导,则需要 --user 选项。尽管不建议这样做,但可以通过传递超级用户的名称作为参数(例如 <span class="emphasis"><em>--user=root</em></span>)来强制使用超级用户。

    此选项在 Windows 上不可用。

  • --name <em class="replaceable"><code>router_name</code></em>

    命令行格式 --name 路由器名称
    类型 字符串
    默认值 系统

    在初始引导时,为自包含路由器实例指定符号名称。此选项是可选的,与 --directory 一起使用。创建多个实例时,名称必须唯一。

  • --force-password-validation

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

    默认情况下,MySQL Router 会跳过 MySQL 服务器的 validate_password 机制,而是根据已知的 validate_password 默认设置生成并使用强密码。这是因为 validate_password 可以由用户配置,而路由器无法考虑不常见的自定义设置。

    此选项可确保不会跳过对生成密码的密码验证 (validate_password),默认情况下禁用此选项。

  • --password-retries <em class="replaceable"><code>num_retries</code></em>

    命令行格式 --password-retries 重试次数
    类型 整数
    默认值 20
    最小值 1
    最大值 10000

    指定在使用密码验证规则创建用户帐户时 MySQL Router 应尝试生成密码的次数。默认值为 20。有效范围为 1 到 10000。

    失败的最可能原因是由于自定义的 validate_password 设置具有不寻常的要求,例如最小长度为 50 个字符。在这种失败情况下,--force-password-validation 设置为 true 和/或禁用了 mysql_native_password MySQL 服务器插件(此插件允许绕过验证)。

  • --force

    命令行格式 --force

    强制对主机上先前配置的路由器实例进行重新配置。

  • --ssl-mode <em class="replaceable"><code>mode</code></em>

    命令行格式 --ssl-mode 模式
    类型 字符串
    默认值 PREFERRED
    有效值

    PREFERRED

    DISABLED

    REQUIRED

    VERIFY_CA

    VERIFY_IDENTITY

    在引导期间以及在连接到元数据服务器时正常运行期间使用的 SSL 连接模式。类似于 <span class="command"><strong>mysql</strong></span> 客户端中的 --ssl-mode

    在引导期间,路由器与元数据服务器建立的所有连接都将使用指定的 SSL 选项。如果未在配置中指定 ssl_mode,则默认为 PREFERRED。在正常操作期间,路由器启动后,其元数据缓存插件将读取并遵循所有配置的 SSL 设置。

    如果设置为默认值 (PREFERRED) 以外的值,则会在生成的配置文件的 [metadata_cache] 部分下插入一个 ssl_mode 条目。

    可用值为 DISABLED、PREFERRED、REQUIRED、VERIFY_CA 和 VERIFY_IDENTITY。PREFERRED 是默认值。与 <span class="command"><strong>mysql</strong></span> 客户端一样,此值不区分大小写。

    配置文件等效项在 ssl_mode 中单独记录。

  • --ssl-cert <em class="replaceable"><code>file_path</code></em>

    命令行格式 --ssl-cert 文件路径
    类型 字符串
    默认值

    SSL 公钥证书文件的路径名(PEM 格式)。这用于在引导过程中促进客户端身份验证。这与 MySQL 客户端的 --ssl-cert 选项的功能直接匹配并使用。

    --ssl-key 一样,此选项仅在使用 root 帐户的引导期间使用。当使用 REQUIRE X509 创建 root 帐户时,此选项很有用,因为以 root 身份登录需要客户端对自己进行身份验证。

  • --ssl-key file_path

    命令行格式 --ssl-key 文件路径
    类型 字符串

    PEM 格式的 SSL 私钥文件的路径名。这用于在引导过程中促进客户端身份验证。这直接匹配并使用 MySQL 客户端的 --ssl-key 选项的功能。

    --ssl-cert 类似,此选项仅在使用 root 帐户的引导过程中使用。当 root 帐户是使用 REQUIRE X509 创建的,因此以 root 用户身份登录需要客户端进行身份验证时,此选项很有用。

  • --ssl-cipher ciphers

    命令行格式 --ssl-cipher 密码
    类型 字符串
    默认值

    如果启用了 SSL,则允许使用的 SSL 密码的冒号分隔(“:”)列表。

  • --tls-version versions

    命令行格式 --tls-version 版本
    类型 字符串
    默认值

    如果启用了 SSL,则要请求的 TLS 版本的逗号分隔(“,”)列表。

  • --ssl-ca file_path

    命令行格式 --ssl-ca 文件路径
    类型 字符串
    默认值

    用于验证服务器证书的 SSL CA 文件的路径。

  • --ssl-capath dir_path

    命令行格式 --ssl-capath 目录路径
    类型 字符串
    默认值

    包含用于验证服务器证书的 SSL CA 文件的目录的路径。

  • --ssl-crl file_path

    命令行格式 --ssl-crl 文件路径
    类型 字符串
    默认值

    在验证服务器证书时要使用的 SSL CRL 文件的路径。

  • --ssl-crlpath dir_path

    命令行格式 --ssl-crlpath 目录路径
    类型 字符串
    默认值

    包含在验证服务器证书时要使用的 SSL CRL 文件的目录的路径。

  • --client-ssl-mode mode

    命令行格式 --client-ssl-mode
    类型 字符串
    默认值 PREFERRED
    有效值

    PREFERRED

    DISABLED

    直通

    REQUIRED

    在 MySQL Router 和客户端之间进行连接时,用于引导和正常操作的 SSL 连接模式。

    在引导过程中,路由器与客户端建立的所有连接都将使用指定的 SSL 选项。如果在配置中未指定 client_ssl_mode,则默认为 PREFERRED

    配置文件等效项在 client_ssl_mode 中单独记录。

  • --client-ssl-cert file_path

    命令行格式 --client-ssl-cert 文件路径
    类型 字符串
    默认值

    PEM 格式的 SSL 公钥证书文件的路径名。这用于在引导过程中促进客户端身份验证。

    --client-ssl-key 类似,此选项仅在使用 root 帐户的引导过程中使用。当 root 帐户是使用 REQUIRE X509 创建的,因此以 root 用户身份登录需要客户端进行身份验证时,此选项很有用。

  • client-ssl-curves

    命令行格式 --client-ssl-curves
    类型 字符串

    默认为安全的 SSL 曲线列表。将此字符串格式化为以冒号分隔的曲线名称列表。

  • --client-ssl-key file_path

    命令行格式 --client-ssl-key 文件路径
    类型 字符串

    PEM 格式的 SSL 私钥文件的路径名。这用于在引导过程中促进客户端身份验证。

    --client-ssl-cert 类似,此选项仅在使用 root 帐户的引导过程中使用。当 root 帐户是使用 REQUIRE X509 创建的,因此以 root 用户身份登录需要客户端进行身份验证时,此选项很有用。

  • --client-ssl-cipher ciphers

    命令行格式 --client-ssl-cipher
    类型 字符串

    如果启用了 SSL,则允许使用的 SSL 密码的冒号分隔(“:”)列表。

  • client-ssl-dh-params

    命令行格式 --client-ssl-dh-params=文件路径
    类型 字符串

    DH 参数文件的名称。如果指定且不为空,则使用此文件中的 DH 参数,而不是内部默认的 DH 参数。以 PEM 格式格式化 DH 参数文件。

  • --client-ssl-ca file_path

    命令行格式 --client-ssl-ca 文件路径
    类型 字符串
    默认值

    用于验证服务器证书的 SSL CA 文件的路径。

  • --client-ssl-capath dir_path

    命令行格式 --client-ssl-capath 目录路径
    类型 字符串
    默认值

    包含用于验证服务器证书的 SSL CA 文件的目录的路径。

  • --client-ssl-crl file_path

    命令行格式 --client-ssl-crl 文件路径
    类型 字符串
    默认值

    在验证服务器证书时要使用的 SSL CRL 文件的路径。

  • --client-ssl-crlpath dir_path

    命令行格式 --client-ssl-crlpath 目录路径
    类型 字符串
    默认值

    包含在验证服务器证书时要使用的 SSL CRL 文件的目录的路径。

  • --server-ssl-mode mode

    命令行格式 --server-ssl-mode
    类型 字符串
    默认值 PREFERRED
    有效值

    作为客户端

    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 文件路径
    类型 字符串
    默认值

    用于验证服务器证书的 SSL CA 文件的路径。

  • --server-ssl-capath dir_path

    命令行格式 --server-ssl-capath 目录路径
    类型 字符串
    默认值

    包含用于验证服务器证书的 SSL CA 文件的目录的路径。

  • --server-ssl-crl file_path

    命令行格式 --server-ssl-crl 文件路径
    类型 字符串
    默认值

    在验证服务器证书时要使用的 SSL CRL 文件的路径。

  • --server-ssl-crlpath dir_path

    命令行格式 --server-ssl-crlpath 目录路径
    类型 字符串
    默认值

    包含在验证服务器证书时要使用的 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 文件路径, -c 文件路径

    用于提供要使用的配置文件的路径和文件名。如果要使用位于默认位置以外的文件夹中的配置文件,请使用此选项。

    --bootstrap 一起使用时,如果配置文件已存在,并且生成的配置文件内容与原始文件不同,则会将当前文件的副本保存为扩展名为 .bak 的文件。现有的 .bak 文件将被覆盖。

  • --extra-config file_path, -a file_path

    命令行格式 --extra-config 文件路径, -a 文件路径

    用于提供要使用的可选附加配置文件。如果要将配置文件分为两部分进行测试、在同一台计算机上运行应用程序的多个实例等,请使用此选项。

    此配置文件在主配置文件之后读取。如果存在冲突(在多个配置文件中设置了某个选项),则使用最后加载的文件中的值。

  • --install-service

    命令行格式 --install-service [服务名称]
    特定于平台 Windows

    将路由器安装为 Windows 服务,该服务将在 Windows 启动时自动启动。服务名称默认为 MySQLRouter

    此安装过程不会验证通过 --config 传入的配置文件。

    此选项仅在 Windows 上可用。

  • --install-service-manual

    命令行格式 --install-service-manual [服务名称]
    特定于平台 Windows

    将 MySQL Router 安装为可以手动启动的 Windows 服务。服务名称默认为 MySQLRouter

    此选项仅在 Windows 上可用。

  • --remove-service

    命令行格式 --remove-service [服务名称]
    特定于平台 Windows

    移除路由器 Windows 服务;服务名称默认为 MySQLRouter。

    此选项仅在 Windows 上可用。

  • --service

    命令行格式 --service
    特定于平台 Windows

    将路由器作为 Windows 服务启动。这是一个私有选项,意味着它仅供 Windows 服务在将路由器作为服务启动时使用。

    此选项仅在 Windows 上可用。

  • --update-credentials-section

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

    此选项仅在 Windows 上可用,并且引用其密码保管库。

  • --conf-target-cluster

    命令行格式 --conf-target-cluster value
    类型 字符串
    有效值

    current

    primary

    设置 target_cluster 元数据 MySQL 路由器选项。接受以下字符串之一

    • current:将 target_cluster 设置为包含正在引导的节点的集群。它将其定义为集群的 UUID 值。

      如果这也是主集群,它不会像 primary 那样动态地跟随角色变化;而是保持静态。

    • primary:将 target_cluster 设置为主集群,包括它在运行时发生变化时。

    另请参阅 --config-target-cluster-by-name,它将 target_cluster 设置为特定的静态集群名称。

    注意

    针对 集群集 进行引导需要将 cluster_type 路由器配置选项设置为 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 路由器选项设置为特定的集群名称。

    或者,使用 --conf-target-cluster 分配动态集群类型,例如 primary。

  • --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 路由器 REST API Web 服务功能的配置详细信息会在引导时添加到生成的 mysqlrouter.conf 文件中;此参数表示不会添加这些详细信息。这不会禁用 REST API 功能,因为 REST API 功能可以稍后手动配置(以启用它)。

  • --https-port

    命令行格式 --https-port value
    类型 整数
    默认值 8443
    最小值 1
    最大值 65535

    (可选)在引导时,在生成的 mysqlrouter.conf 的 [http_server] 部分下为 MySQL 路由器 REST API 定义 HTTP 服务器的 端口。默认为 8443。不会检查端口的可用性。