為了支援 NDB Cluster,您應該更新 my.cnf
,如下列範例所示。您也可以在叫用可執行檔時,在命令列上指定這些參數。
這裡顯示的選項不應與 config.ini
全域組態檔案中使用的選項混淆。全域組態選項將在本節稍後討論。
# my.cnf
# example additions to my.cnf for NDB Cluster
# (valid in MySQL 9.0)
# enable ndbcluster storage engine, and provide connection string for
# management server host (default port is 1186)
[mysqld]
ndbcluster
ndb-connectstring=ndb_mgmd.mysql.com
# provide connection string for management server host (default port: 1186)
[ndbd]
connect-string=ndb_mgmd.mysql.com
# provide connection string for management server host (default port: 1186)
[ndb_mgm]
connect-string=ndb_mgmd.mysql.com
# provide location of cluster configuration file
# IMPORTANT: When starting the management server with this option in the
# configuration file, the use of --initial or --reload on the command line when
# invoking ndb_mgmd is also required.
[ndb_mgmd]
config-file=/etc/config.ini
(如需連線字串的詳細資訊,請參閱第 25.4.3.3 節「NDB Cluster 連線字串」。)
# my.cnf
# example additions to my.cnf for NDB Cluster
# (works on all versions)
# enable ndbcluster storage engine, and provide connection string for management
# server host to the default port 1186
[mysqld]
ndbcluster
ndb-connectstring=ndb_mgmd.mysql.com:1186
一旦您啟動了 mysqld 處理序,並且在 my.cnf
檔案中的 [mysqld]
區段中使用了 NDBCLUSTER
和 ndb-connectstring
參數 (如先前所示),您就無法在未實際啟動叢集的情況下執行任何 CREATE TABLE
或 ALTER TABLE
陳述式。否則,這些陳述式將會失敗並產生錯誤。這是設計使然。
您也可以在叢集 my.cnf
檔案中使用單獨的 [mysql_cluster]
區段,以便讓所有可執行檔讀取和使用設定
# cluster-specific settings
[mysql_cluster]
ndb-connectstring=ndb_mgmd.mysql.com:1186
如需其他可以在 my.cnf
檔案中設定的 NDB
變數,請參閱第 25.4.3.9.2 節「NDB Cluster 系統變數」。
依照慣例,NDB Cluster 全域組態檔案名為 config.ini
(但這並非必要)。如果需要,它會在啟動時由 ndb_mgmd 讀取,而且可以放置在任何可供其讀取的位置。組態的位置和名稱是使用 --config-file=
,並在命令列上使用 ndb_mgmd 指定。此選項沒有預設值,如果 ndb_mgmd 使用組態快取,則會忽略此選項。path_name
NDB Cluster 的全域組態檔案使用 INI 格式,其中包含以區段標題 (以方括號括住) 開頭的區段,後接適當的參數名稱和值。與標準 INI 格式的一個偏差是,參數名稱和值可以用冒號 (:
) 以及等號 (=
) 分隔;不過,建議使用等號。另一個偏差是,區段並非以區段名稱唯一識別。反之,唯一區段 (例如,同一類型的兩個不同節點) 是以區段內指定為參數的唯一 ID 識別。
預設值是為大多數參數定義的,也可以在 config.ini
中指定。若要建立預設值區段,只要將文字 default
新增至區段名稱即可。例如,[ndbd]
區段包含適用於特定資料節點的參數,而 [ndbd default]
區段包含適用於所有資料節點的參數。假設所有資料節點都應該使用相同的資料記憶體大小。若要全部組態,請建立包含 DataMemory
行的 [ndbd default]
區段,以指定資料記憶體大小。
如果使用,[ndbd default]
區段必須位於組態檔案中任何 [ndbd]
區段之前。這對於任何其他類型的 default
區段也是如此。
在某些舊版的 NDB Cluster 中,NoOfReplicas
沒有預設值,必須一律在 [ndbd default]
區段中明確指定。雖然此參數現在的預設值為 2,這是在大多數常見使用案例中建議的設定,但仍建議明確設定此參數。
全域組態檔案必須定義叢集中涉及的電腦和節點,以及這些節點所在的電腦。此處顯示一個簡單的組態檔案範例,其中包含一個管理伺服器、兩個資料節點和兩個 MySQL 伺服器的叢集
# file "config.ini" - 2 data nodes and 2 SQL nodes
# This file is placed in the startup directory of ndb_mgmd (the
# management server)
# The first MySQL Server can be started from any host. The second
# can be started only on the host mysqld_5.mysql.com
[ndbd default]
NoOfReplicas= 2
DataDir= /var/lib/mysql-cluster
[ndb_mgmd]
Hostname= ndb_mgmd.mysql.com
DataDir= /var/lib/mysql-cluster
[ndbd]
HostName= ndbd_2.mysql.com
[ndbd]
HostName= ndbd_3.mysql.com
[mysqld]
[mysqld]
HostName= mysqld_5.mysql.com
前面的範例旨在作為熟悉 NDB Cluster 的最小起始組態,而且幾乎可以肯定不足以用於生產環境設定。請參閱第 25.4.3.2 節「NDB Cluster 的建議起始組態」,其中提供更完整的起始組態範例。
每個節點在 config.ini
檔案中都有自己的區段。例如,此叢集有兩個資料節點,因此前面的組態檔案包含兩個定義這些節點的 [ndbd]
區段。
請勿在 config.ini
檔案中,將註解與區段標題放在同一行;這會導致管理伺服器無法啟動,因為在這種情況下無法剖析組態檔案。
config.ini 檔案的區段
您可以在 config.ini
組態檔案中使用六個不同的區段,如下列清單所述
[computer]
:定義叢集主機。這並非設定可行的 NDB Cluster 所必須,但可以在設定大型叢集時方便使用。如需詳細資訊,請參閱第 25.4.3.4 節「在 NDB Cluster 中定義電腦」。[ndbd]
:定義叢集資料節點 (ndbd 處理序)。如需詳細資訊,請參閱第 25.4.3.6 節「定義 NDB Cluster 資料節點」。[mysqld]
:定義叢集的 MySQL 伺服器節點 (也稱為 SQL 或 API 節點)。如需 SQL 節點組態的討論,請參閱第 25.4.3.7 節「在 NDB Cluster 中定義 SQL 和其他 API 節點」。[mgm]
或[ndb_mgmd]
:定義叢集管理伺服器 (MGM) 節點。如需有關管理節點組態的資訊,請參閱第 25.4.3.5 節「定義 NDB Cluster 管理伺服器」。[tcp]
:定義叢集節點之間的 TCP/IP 連線,而 TCP/IP 是預設傳輸通訊協定。通常,不需要[tcp]
或[tcp default]
區段來設定 NDB Cluster,因為叢集會自動處理這項作業;不過,在某些情況下可能需要覆寫叢集提供的預設值。如需有關可用的 TCP/IP 組態參數以及如何使用這些參數的資訊,請參閱第 25.4.3.10 節「NDB Cluster TCP/IP 連線」。(在某些情況下,您也可能會發現第 25.4.3.11 節「使用直接連線的 NDB Cluster TCP/IP 連線」很有趣。)[shm]
:定義節點之間的共用記憶體連線。在 MySQL 9.0 中,預設會啟用此功能,但仍應視為實驗性功能。如需 SHM 互連的討論,請參閱第 25.4.3.12 節「NDB Cluster 共用記憶體連線」。[sci]
:定義叢集資料節點之間的 Scalable Coherent Interface 連線。NDB 9.0 中不支援。
您可以為每個區段定義 default
值。如果使用,default
區段應位於該類型的任何其他區段之前。例如,[ndbd default]
區段應該出現在組態檔案中的任何 [ndbd]
區段之前。
NDB Cluster 參數名稱不區分大小寫,除非在 MySQL 伺服器 my.cnf
或 my.ini
檔案中指定。