配置文件格式类似于带有部分和选项的传统 INI 文件格式,但有一些额外的扩展名。
支持正斜杠和反斜杠。反斜杠被无条件复制,因为它们不转义字符。
每个配置文件都包含一个 配置节列表,其中每个节包含一系列配置选项。每个配置选项都有一个名称和值。例如:
[section name]
option = value
option = value
option = value
[section name:optional section key]
option = value
option = value
option = value
配置文件节标题以左括号 ( ) 开头,以右括号 ( [
) 结尾]
。行中可以有前导和尾随空格字符,这些字符将被忽略,但节括号内没有空格。
括号内的节头由
节名和可选的
节键组成,节键与节头之间用冒号 ( :
) 分隔。部分名称和部分键的组合对于配置是唯一的。
部分名称和部分键由一个或多个字母、数字或下划线 ( _
) 组成。节名或节键中不允许有其他字符。
节类似于命名空间。例如,
user
选项的含义取决于其关联的部分。[DEFAULT]部分中
的用户是指运行 MySQL Router 的系统用户,也由
命令行选项控制。与此无关的是
在
[metadata_cache]部分定义用户,它指的是访问 MySQL 服务器元数据的 MySQL 用户。
--user
在一个部分的起始标题之后,可以有零个或多个选项行的序列,其中每个选项行的形式如下:
name = value
在处理之前,选项名称或选项值上的任何前导或尾随空白字符都将被删除。选项名称不区分大小写。不支持尾随注释,因此在此示例中,该选项mode
的值为“read-only #Read only mode”,因此在启动路由器时会产生错误。
[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 Router 定义了可用于配置文件的预定义变量。变量使用大括号,例如
{program}
用于program
预定义变量。
表 4.1 预定义变量
姓名 | 描述 |
---|---|
program |
程序的名称,通常mysqlrouter
|
origin |
二进制文件所在目录的路径 |
logging_folder |
日志文件的文件夹路径 |
plugin_folder |
插件文件夹路径 |
runtime_folder |
运行时数据的文件夹路径 |
config_folder |
配置文件的文件夹路径 |
有关命令行语法相关信息和选项,请参阅 第 4.3.1 节,“使用命令行定义选项”。