mysqld 是傳統的 MySQL 伺服器程序。若要搭配 NDB 叢集使用,mysqld 需要建置時支援 NDB
儲存引擎,如同從 https://mysqldev.dev.org.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
選項來重新啟動伺服器。