配置文件格式类似于传统的 INI 文件格式,包含节和选项,但有一些额外的扩展。
正斜杠和反斜杠都受支持。反斜杠被无条件复制,因为它们不转义字符。
每个配置文件都包含一个配置节列表,其中每个节包含一个配置选项序列。每个配置选项都有一个名称和值。例如
[section name]
option = value
option = value
option = value
[section name:optional section key]
option = value
option = value
option = value
配置文件节标题以开括号 ([
) 开头,以闭括号 (]
) 结束。在行中可以有前导和尾部空格字符,这些字符将被忽略,但在节括号内不允许有空格。
括号内的节标题由一个节名称和一个可选的节键组成,它们之间用冒号 (:
) 分隔。节名称和节键的组合对于一个配置来说是唯一的。
节名称和节键由一个或多个字母、数字或下划线 (_
) 组成。节名称或节键中不允许使用其他字符。
节类似于命名空间。例如,user
选项的含义取决于其关联的节。[DEFAULT] 节中的user 指的是 MySQL 路由器运行的系统用户,它也由 --user
命令行选项控制。与之无关的是在 [metadata_cache] 节中定义user,它指的是访问 MySQL 服务器元数据的 MySQL 用户。
在节的起始标题之后,可以有一个包含零个或多个选项行的序列,其中每个选项行都具有以下形式
name = value
在处理之前,选项名称或选项值上的任何前导或尾部空格字符都将被删除。选项名称不区分大小写。不支持尾部注释,因此在本例中,选项 routing_strategy
被赋予值 round-robin # Circles back to first server
,并在启动路由器时生成错误。
[routing:round-robin]
# Trailing comments are not supported so the following is incorrect
routing_strategy=round-robin # Circles back to first server
选项值支持使用大括号 {
和 }
内的选项名称进行 (变量插值)。插值是在检索选项值时完成的,而不是在从配置文件中读取它时完成的。如果未定义变量,则不进行任何替换,并按字面意思读取选项值。
考虑以下示例配置文件
[DEFAULT]
prefix = /usr/
[sample]
bin = {prefix}bin/{name}
lib = {prefix}lib/{name}
name = magic
directory = C:\foo\bar\{3a339172-6898-11e6-8540-9f7b235afb23}
这里 bin
的值为 "/usr/bin/magic",lib
的值为 "/usr/lib/magic",而 directory
的值为 "C:\foo\bar\{3a339172-6898-11e6-8540-9f7b235afb23}",因为名为 "{3a339172-6898-11e6-8540-9f7b235afb23}" 的变量未定义。
MySQL 路由器定义了可供配置文件使用的预定义变量。变量使用大括号,例如 {program}
用于 program
预定义变量。
表 4.1 预定义变量
名称 | 描述 |
---|---|
program |
程序名称,通常为 mysqlrouter |
origin |
二进制文件所在的目录路径 |
logging_folder |
日志文件所在的文件夹路径 |
plugin_folder |
插件所在的文件夹路径 |
runtime_folder |
运行时数据所在的文件夹路径 |
config_folder |
配置文件所在的文件夹路径 |
有关命令行语法相关信息和选项,请参阅第 4.3.1 节,“使用命令行定义选项”。