除了 NDB 叢集管理伺服器 ( ndb_mgmd ) 之外,NDB 叢集的每個節點都需要一個連線字串,指向管理伺服器的位置。此連線字串用於建立與管理伺服器的連線,並根據節點在叢集中的角色執行其他任務。連線字串的語法如下
[nodeid=node_id, ]host-definition[, host-definition[, ...]]
host-definition:
host_name[:port_number]
node_id
是一個大於或等於 1 的整數,用於識別 config.ini
中的節點。host_name
是一個字串,表示有效的主機名稱或 IP 位址。port_number
是一個整數,指的是 TCP/IP 連接埠號碼。
example 1 (long): "nodeid=2,myhost1:1100,myhost2:1100,198.51.100.3:1200"
example 2 (short): "myhost1"
如果未提供,則 localhost:1186
用作預設連線字串值。如果從連線字串中省略 port_num
,則預設連接埠為 1186。此連接埠應始終在網路上可用,因為 IANA 已為此目的分配了它(有關詳細資訊,請參閱 http://www.iana.org/assignments/port-numbers )。
透過列出多個主機定義,可以指定多個備援管理伺服器。NDB 叢集資料或 API 節點會嘗試按指定順序聯絡每個主機上的連續管理伺服器,直到建立成功連線為止。
也可以在連線字串中指定一個或多個繫結位址,供具有多個網路介面的節點用於連線到管理伺服器。繫結位址包含主機名稱或網路位址以及可選的連接埠號碼。此增強的連線字串語法如下所示
[nodeid=node_id, ]
[bind-address=host-definition, ]
host-definition[; bind-address=host-definition]
host-definition[; bind-address=host-definition]
[, ...]]
host-definition:
host_name[:port_number]
如果在指定任何管理主機之前在連線字串中使用單一繫結位址,則此位址會用作連線到任何這些主機的預設位址(除非針對特定管理伺服器覆寫;請參閱本節稍後的範例)。例如,以下連線字串會導致節點使用 198.51.100.242
,而不管它連線到哪個管理伺服器
bind-address=198.51.100.242, poseidon:1186, perch:1186
如果在管理主機定義之後指定了繫結位址,則它僅用於連線到該管理節點。請考慮以下連線字串
poseidon:1186;bind-address=localhost, perch:1186;bind-address=198.51.100.242
在這種情況下,節點會使用 localhost
連線到在名為 poseidon
的主機上執行的管理伺服器,並使用 198.51.100.242
連線到在名為 perch
的主機上執行的管理伺服器。
您可以指定預設繫結位址,然後針對一個或多個特定管理主機覆寫此預設值。在以下範例中,localhost
用於連線到在主機 poseidon
上執行的管理伺服器;由於 198.51.100.242
首先指定(在任何管理伺服器定義之前),它是預設繫結位址,因此用於連線到主機 perch
和 orca
上的管理伺服器
bind-address=198.51.100.242,poseidon:1186;bind-address=localhost,perch:1186,orca:2200
有多種不同的方法可以指定連線字串
每個可執行檔都有自己的命令列選項,可用於在啟動時指定管理伺服器。(請參閱各個可執行檔的文件。)
也可以透過將連線字串放在管理伺服器的
my.cnf
檔案的[mysql_cluster]
區段中,一次設定叢集中所有節點的連線字串。為了向後相容性,還有兩個選項可用,使用相同的語法
將
NDB_CONNECTSTRING
環境變數設定為包含連線字串。將每個可執行檔的連線字串寫入名為
Ndb.cfg
的文字檔中,並將此檔案放在可執行檔的啟動目錄中。
但是,這些現在已過時,不應在新的安裝中使用。
指定連線字串的建議方法是在命令列或每個可執行檔的 my.cnf
檔案中設定它。