MySQL 路由器 9.0  /  配置  /  配置位置

4.2 配置位置

MySQL 路由器在启动时扫描默认配置文件,并在运行时从命令行可选地加载用户定义的配置文件。

默认配置文件位置

默认情况下,MySQL 路由器扫描特定位置以查找其配置文件,这些配置文件取决于平台和 MySQL 路由器的设置方式。

您可以通过使用 -DROUTER_CONFIGDIR=<path> 选项在编译时更改默认位置。您也可以编辑 cmake/settings.cmake 以在编译 MySQL 路由器之前更改默认位置,从而为特定平台添加新位置或例外情况。

执行 mysqlrouter --help 以查看系统上的默认配置文件位置(及其可用性)。例如

$> mysqlrouter --help

...

Start MySQL Router.

Configuration read from the following files in the given order (enclosed
in parentheses means not available for reading):
  (/usr/local/mysql-router/mysqlrouter.conf)
  /Users/philip/.mysqlrouter.conf
Plugins Path:
  /usr/local/lib/mysqlrouter
Default Log Directory:
  /usr/local/mysql-router
Default Persistent Data Directory:
  /usr/local/mysql-router/data
Default Runtime State Directory:
  /usr/local/mysql-router/run

Usage: mysqlrouter [-v|--version] [-h|--help]

...
重要

如果使用 --config 选项传递了用户定义的配置文件,则不会加载默认配置文件。

在 Linux 上,MySQL 路由器默认情况下扫描以下位置,尽管这些位置取决于系统

  1. /etc/mysqlrouter/mysqlrouter.conf

    注意

    与 MySQL 服务器不同,不支持向后兼容的路径 "/etc/mysqlrouter.conf"。

  2. $HOME/.mysqlrouter.conf

注意

为了向后兼容,MySQL 路由器还在每个目录中查找 .ini 变体。在这样做时,路由器首先在初始目录中查找 .conf 版本,然后检查 .ini 版本,然后在下一个目录中重复此过程,该目录通常是系统上用户的 home 目录。

用户定义的和额外的配置文件

两个命令行选项有助于控制这些配置文件位置

  • --config(或 -c):从该文件读取基本配置,并且不使用或扫描默认文件路径。

    使用示例:在使用 --directory 引导选项生成独立的 MySQL 路由器安装时,生成的 start.sh 将此选项传递到该目录内的生成的 mysqlrouter.conf 中。

  • --extra-config(或 -a):在从默认位置读取的配置文件或使用 --config 选项指定的配置文件读取后,读取此附加配置文件。

例如

$> mysqlrouter --config /custom/path/to/router.conf --extra-config /another/config.conf

可以传递多个额外的配置选项,并且这些文件按输入顺序加载,其中 --config 选项在 --extra-config 选项之前加载。例如

$> mysqlrouter --extra-config a.conf --config b.conf --extra-config c.conf

在上面的示例中,b.conf 首先加载,然后加载 a.confc.conf,按此顺序。此外,默认配置文件(例如 /etc/mysqlrouter/mysqlrouter.conf)不会加载,因为使用了 --config

每个加载的配置文件都会覆盖先前读取的配置文件中的配置设置。

默认配置文件位置(Linux)

以下列出了路由器在流行的 Linux 平台上读取配置文件的默认文件位置。

注意

执行 mysqlrouter --help 以查看系统上的默认配置文件位置(及其可用性)。

  • 默认系统范围内的安装在 /usr/local 下:/usr/local/etc/mysqlrouter.conf

  • RPM 和 Debian:/etc/mysqlrouter/mysqlrouter.conf

  • 在所有系统上,使用 --directory 引导的独立安装会将 mysqlrouter.conf 添加到 --directory 定义的目录中。

默认配置文件位置(Windows)

MySQL 路由器在 Windows 上搜索配置文件的默认文件位置。

注意

执行 mysqlrouter.exe --help 以查看系统上的默认配置文件位置(及其可用性)。

  • 默认系统范围内的安装在 C:\ProgramData\MySQL\MySQL Router 下:C:\ProgramData\MySQL\MySQL Router\mysqlrouter.conf

  • 此外:C:\Users\username\AppData\Roaming\mysqlrouter.conf 其中 username 被替换为您的系统用户。

  • 除了 mysqlrouter.conf 之外,出于向后兼容的目的,系统还会查找 mysqlrouter.ini

  • 使用 --directory:使用 --directory 引导的独立安装会将 mysqlrouter.conf 添加到 --directory 定义的目录中。

集群元数据中的 MySQL 路由器配置

针对 InnoDB 集群引导的路由器的完整配置存储在 InnoDB 集群元数据模式中,并且可以通过 MySQL Shell 操作 object.routerOptions(对于集群、集群集和副本集)读取。

配置按路由器存储在 mysql_innodb_cluster_metadata.routers 表中,每个路由器有一行。路由器的每一行都会在启动或重新启动时由路由器更新。

例如

        mysql>  select JSON_PRETTY(attributes->>'$.Configuration') as Configuration from mysql_innodb_cluster_metadata.routers \G
        
        Configuration: {
"io": {
    "backend": "poll",
    "threads": 0
},
"common": {
    "name": "system",
    "user": "",
    "read_timeout": 30,
    "client_ssl_key": "/Users/areliga/dev/server/mysql-trunk/build/pt/data/router-key.pem",
    "client_ssl_cert": "/Users/areliga/dev/server/mysql-trunk/build/pt/data/router-cert.pem",
    "client_ssl_mode": "PREFERRED",
    "connect_timeout": 5,
    "server_ssl_mode": "PREFERRED",
    "server_ssl_verify": "DISABLED",
    "max_total_connections": 512,
    "unknown_config_option": "error",
    "router_require_enforce": true,
    "max_idle_server_connections": 64
},
"loggers": {
    "filelog": {
    "level": "info",
    "filename": "mysqlrouter.log",
    "destination": "",
    "timestamp_precision": "second"
    }
},
"endpoints": {
    "bootstrap_ro": {
    
    ......
    
    }
   }

有关更多信息,请参阅 使用 MySQL Shell 查看路由器配置

为了向后兼容,MySQL 路由器继续在 mysql_innodb_cluster_metadata.routers 中的 attributes JSON 中存储一些配置参数。

例如

select JSON_PRETTY(attributes) from mysql_innodb_cluster_metadata.routers;
| {
  "ROEndpoint": "6447",
  "RWEndpoint": "6446",
  "ROXEndpoint": "6449",
  "RWXEndpoint": "6448",
  "RWSplitEndpoint": "6450",
  "MetadataUser": "mysql_router1_plje99d",
  "Configuration": { /*...*/ },
  "bootstrapTargetType": "cluster"
} |