配置文件格式类似于传统的 INI 文件格式,包含节和选项,但有一些额外的扩展。
正斜杠和反斜杠都支持。反斜杠会被无条件复制,因为它们不会转义字符。
每个配置文件都包含一系列 配置节,其中每个节包含一系列 配置选项。每个配置选项都有一个名称和值。例如
[section name]
option = value
option = value
option = value
[section name:optional section key]
option = value
option = value
option = value
配置文件节标题以左括号 ([
) 开头,以右括号 (]
) 结尾。该行上可以有前导和尾随空格字符,这些字符将被忽略,但在节括号内不能有空格。
括号内的节标题包含一个 节名称 和一个可选的 节键,该键用冒号 (:
) 与节标题分隔。节名称和节键的组合对于配置是唯一的。
节名称和节键由一个或多个字母、数字或下划线 (_
) 组成。节名称或节键中不允许使用其他字符。
节类似于命名空间。例如,user
选项的含义取决于它关联的节。user 在 [DEFAULT] 节中指的是运行 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 节,“使用命令行定义选项”。