MySQL 路由器在启动时扫描默认配置文件,并可以选择在运行时从命令行加载用户定义的配置文件。
默认情况下,MySQL 路由器会在特定位置扫描其配置文件,这些位置取决于平台和 MySQL 路由器的设置方式。
您可以在编译时使用 -DROUTER_CONFIGDIR=<path>
选项更改默认位置。您还可以在编译 MySQL 路由器之前编辑 cmake/settings.cmake
来更改默认位置,从而为特定平台添加新位置或例外。
执行 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 路由器默认扫描以下位置,但这些位置取决于系统
-
/etc/mysqlrouter/mysqlrouter.conf
注意与 MySQL 服务器不同,不支持向后兼容的路径 "
/etc/mysqlrouter.conf
"。 $HOME/.mysqlrouter.conf
为了向后兼容,MySQL 路由器还会在每个目录中查找 .ini 变体。为此,路由器会在初始目录中查找 .conf 版本,然后检查 .ini 版本,然后在下一个目录(通常是系统上的用户主目录)中重复此过程。
有两个命令行选项有助于控制这些配置文件位置
-
--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.conf
和 c.conf
。此外,由于使用了 --config
,因此不会加载默认配置文件,例如 /etc/mysqlrouter/mysqlrouter.conf
。
每个加载的配置文件都会覆盖先前读取的配置文件中的配置设置。
以下列出了路由器在常用 Linux 平台上读取配置文件的默认文件位置。
执行 mysqlrouter --help
可以查看系统上的默认配置文件位置(及其可用性)。
/usr/local
下的默认系统范围安装:/usr/local/etc/mysqlrouter.conf
RPM 和 Debian:
/etc/mysqlrouter/mysqlrouter.conf
在所有系统上,使用
--directory
进行引导的独立安装会将mysqlrouter.conf
添加到 --directory 定义的目录中。
MySQL 路由器在 Windows 上搜索配置文件的默认文件位置。
执行 mysqlrouter.exe --help
可以查看系统上的默认配置文件位置(及其可用性)。
C:\ProgramData\MySQL\MySQL Router
下的默认系统范围安装:C:\ProgramData\MySQL\MySQL Router\mysqlrouter.conf
此外:
C:\Users\
,其中username
\AppData\Roaming\mysqlrouter.confusername
替换为您的系统用户。除了 mysqlrouter.conf 之外,为了向后兼容,系统还会查找 mysqlrouter.ini
使用
--directory
:使用--directory
进行引导的独立安装会将mysqlrouter.conf
添加到 --directory 定义的目录中。
从 MySQL 路由器 8.4 开始,针对 InnoDB 集群引导的路由器的完整配置存储在 InnoDB 集群元数据架构中,并且可以通过 MySQL Shell 操作
读取,适用于集群、集群集和副本集。object
.routerOptions
配置作为 JSON 存储在 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"
} |