組態檔格式類似傳統的 INI 檔案格式,包含章節和選項,但有一些額外的擴充功能。
同時支援正斜線和反斜線。反斜線會無條件複製,因為它們不會跳脫字元。
每個組態檔都包含一個組態章節列表,其中每個章節都包含一連串的組態選項。每個組態選項都有一個名稱和一個值。例如
[section name]
option = value
option = value
option = value
[section name:optional section key]
option = value
option = value
option = value
組態檔的章節標頭以左方括號 ([
) 開頭,並以右方括號 (]
) 結尾。行上可以有前導和尾隨空格字元,這些字元會被忽略,但章節括號內不能有空格。
括號內的章節標頭包含章節名稱和一個選用的章節金鑰,該金鑰以冒號 (:
) 與章節標頭分隔。章節名稱和章節金鑰的組合對於組態來說是唯一的。
章節名稱和章節金鑰由一或多個字母、數字或底線 (_
) 的序列組成。章節名稱或章節金鑰中不允許使用其他字元。
章節類似於命名空間。例如,user
選項的含義取決於其關聯的章節。在[DEFAULT]章節中的user是指執行 MySQL Router 的系統使用者,這也由 --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 Router 定義了組態檔可用的預定義變數。變數使用大括號,例如預定義變數 program
的 {program}
。
表 4.1 預定義的變數
名稱 | 描述 |
---|---|
program |
程式的名稱,通常為 mysqlrouter |
origin |
二進位檔案所在目錄的路徑 |
logging_folder |
記錄檔資料夾的路徑 |
plugin_folder |
外掛程式資料夾的路徑 |
runtime_folder |
執行階段資料資料夾的路徑 |
config_folder |
組態檔資料夾的路徑 |
如需與命令列語法相關的資訊和選項,請參閱章節 4.3.1,「使用命令列定義選項」。