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 路由器默认情况下扫描以下位置,尽管这些位置取决于系统
-
/etc/mysqlrouter/mysqlrouter.conf
注意与 MySQL 服务器不同,不支持向后兼容的路径 "
/etc/mysqlrouter.conf
"。 $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.conf
和 c.conf
,按此顺序。此外,默认配置文件(例如 /etc/mysqlrouter/mysqlrouter.conf
)不会加载,因为使用了 --config
。
每个加载的配置文件都会覆盖先前读取的配置文件中的配置设置。
以下列出了路由器在流行的 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 定义的目录中。
针对 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"
} |