組態檔格式類似於傳統的 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}
。
表 4.1 預先定義的變數
名稱 | 描述 |
---|---|
program |
程式的名稱,通常為 mysqlrouter |
origin |
二進位檔所在目錄的路徑 |
logging_folder |
記錄檔所在資料夾的路徑 |
plugin_folder |
外掛程式所在資料夾的路徑 |
runtime_folder |
執行階段資料所在資料夾的路徑 |
config_folder |
組態檔所在資料夾的路徑 |
如需與命令列語法相關的資訊和選項,請參閱 第 4.3.1 節,使用命令列定義選項。