mysqld 是傳統的 MySQL 伺服器程序。若要搭配 NDB 叢集使用,mysqld 需要建置時支援 NDB 儲存引擎,如同從 https://dev.mysql.com.tw/downloads/ 取得的預先編譯二進制檔一樣。如果您從來源程式碼建置 MySQL,您必須使用 -DWITH_NDB=1 或 (已過時) -DWITH_NDBCLUSTER=1 選項來叫用 CMake 以包含對 NDB 的支援。
如需從來源程式碼編譯 NDB 叢集的詳細資訊,請參閱第 25.3.1.4 節「在 Linux 上從來源程式碼建置 NDB 叢集」,以及 第 25.3.2.2 節「在 Windows 上從來源程式碼編譯和安裝 NDB 叢集」。
(如需 mysqld 選項和變數的相關資訊,除了本節討論的內容之外,與 NDB 叢集相關的選項和變數,請參閱 第 25.4.3.9 節「用於 NDB 叢集的 MySQL 伺服器選項和變數」。)
如果 mysqld 二進制檔已建置為支援叢集,則 NDBCLUSTER 儲存引擎預設仍為停用狀態。您可以使用兩個可能的選項之一來啟用此引擎
在啟動 mysqld 時,使用
--ndbcluster作為命令列上的啟動選項。在您的
my.cnf檔案的[mysqld]區段中插入包含ndbcluster的行。
要驗證您的伺服器是否已啟用 NDBCLUSTER 儲存引擎的簡單方法,是在 MySQL 監控程式 (mysql) 中發出 SHOW ENGINES 陳述式。您應該會在 NDBCLUSTER 的列中看到值 YES 作為 Support 值。如果您在此列中看到 NO,或如果輸出中未顯示此列,則您並未執行啟用 NDB 的 MySQL 版本。如果您在此列中看到 DISABLED,則您需要以上述兩種方式之一來啟用它。
若要讀取叢集組態資料,MySQL 伺服器至少需要三項資訊
MySQL 伺服器自己的叢集節點 ID
管理伺服器的主機名稱或 IP 位址
它可以連線至管理伺服器的 TCP/IP 通訊埠號碼
節點 ID 可以動態配置,因此嚴格來說並非必須明確指定它們。
mysqld 參數 ndb-connectstring 用於在啟動 mysqld 時,或在 my.cnf 中,於命令列上指定連線字串。連線字串包含可找到管理伺服器的主機名稱或 IP 位址,以及其使用的 TCP/IP 通訊埠。
在下列範例中,ndb_mgmd.mysql.com 是管理伺服器所在的的主機,而管理伺服器會在通訊埠 1186 上接聽叢集訊息
$> mysqld --ndbcluster --ndb-connectstring=ndb_mgmd.mysql.com:1186如需連線字串的詳細資訊,請參閱 第 25.4.3.3 節「NDB 叢集連線字串」。
有了這項資訊,MySQL 伺服器可以作為叢集的完整參與者。(我們通常將以這種方式執行的 mysqld 程序稱為 SQL 節點。)它完全知道所有叢集資料節點及其狀態,並建立與所有資料節點的連線。在此情況下,它可以將任何資料節點用作交易協調器,並讀取和更新節點資料。
您可以在 mysql 用戶端中查看 MySQL 伺服器是否使用 SHOW PROCESSLIST 連線至叢集。如果 MySQL 伺服器已連線至叢集,且您具有 PROCESS 權限,則輸出的第一列會如下所示
mysql> SHOW PROCESSLIST \G
*************************** 1. row ***************************
Id: 1
User: system user
Host:
db:
Command: Daemon
Time: 1
State: Waiting for event from ndbcluster
Info: NULL
若要參與 NDB 叢集,必須使用 兩個 選項 --ndbcluster 和 --ndb-connectstring (或它們在 my.cnf 中的對等項目) 來啟動 mysqld 程序。如果僅使用 --ndbcluster 選項啟動 mysqld,或者如果它無法連線至叢集,則無法使用 NDB 表格,也無法建立任何新的表格,而不論儲存引擎為何。後者限制是一種安全措施,旨在防止建立與 SQL 節點未連線至叢集時具有相同名稱的 NDB 表格。如果您希望在 mysqld 程序未參與 NDB 叢集時使用不同的儲存引擎建立表格,則您必須不使用 --ndbcluster 選項來重新啟動伺服器。