為了讓您熟悉基本概念,我們描述一個功能性 NDB Cluster 最簡單的組態。之後,您應該能夠根據本章其他相關章節提供的資訊來設計您想要的設定。
首先,您需要建立一個組態目錄,例如 /var/lib/mysql-cluster
,方法是以系統 root
使用者身分執行以下指令
$> mkdir /var/lib/mysql-cluster
在這個目錄中,建立一個名為 config.ini
的檔案,其中包含以下資訊。視您的系統需要,為 HostName
和 DataDir
替換適當的值。
# file "config.ini" - showing minimal setup consisting of 1 data node,
# 1 management server, and 3 MySQL servers.
# The empty default sections are not required, and are shown only for
# the sake of completeness.
# Data nodes must provide a hostname but MySQL Servers are not required
# to do so.
# If you do not know the hostname for your machine, use localhost.
# The DataDir parameter also has a default value, but it is recommended to
# set it explicitly.
# [api] and [mgm] are aliases for [mysqld] and [ndb_mgmd], respectively.
[ndbd default]
NoOfReplicas= 1
[mysqld default]
[ndb_mgmd default]
[tcp default]
[ndb_mgmd]
HostName= myhost.example.com
[ndbd]
HostName= myhost.example.com
DataDir= /var/lib/mysql-cluster
[mysqld]
[mysqld]
[mysqld]
您現在可以啟動 ndb_mgmd 管理伺服器。依預設,它會嘗試讀取目前工作目錄中的 config.ini
檔案,因此請將位置變更到該檔案所在的目錄,然後叫用 ndb_mgmd
$> cd /var/lib/mysql-cluster
$> ndb_mgmd
然後執行 ndbd 來啟動單一資料節點
$> ndbd
依預設,ndbd 會在連接埠 1186 上尋找 localhost
的管理伺服器。
最後,將位置變更到 MySQL 資料目錄(通常是 /var/lib/mysql
或 /usr/local/mysql/data
),並確認 my.cnf
檔案包含啟用 NDB 儲存引擎所需的選項
[mysqld]
ndbcluster
您現在可以像往常一樣啟動 MySQL 伺服器
$> mysqld_safe --user=mysql &
稍候片刻,以確認 MySQL 伺服器是否正常執行。如果您看到通知 mysql ended
,請檢查伺服器的 .err
檔案以找出問題所在。
如果到目前為止一切順利,您現在可以開始使用叢集。連線到伺服器並確認已啟用 NDBCLUSTER
儲存引擎
$> mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 8.4.0
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> SHOW ENGINES\G
...
*************************** 12. row ***************************
Engine: NDBCLUSTER
Support: YES
Comment: Clustered, fault-tolerant, memory-based tables
*************************** 13. row ***************************
Engine: NDB
Support: YES
Comment: Alias for NDBCLUSTER
...
前述範例輸出中顯示的列號可能與您系統上顯示的列號不同,這取決於伺服器的組態方式。
嘗試建立一個 NDBCLUSTER
表格
$> mysql
mysql> USE test;
Database changed
mysql> CREATE TABLE ctest (i INT) ENGINE=NDBCLUSTER;
Query OK, 0 rows affected (0.09 sec)
mysql> SHOW CREATE TABLE ctest \G
*************************** 1. row ***************************
Table: ctest
Create Table: CREATE TABLE `ctest` (
`i` int(11) default NULL
) ENGINE=ndbcluster DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)
為了檢查節點是否已正確設定,請啟動管理用戶端
$> ndb_mgm
從管理用戶端內使用 SHOW 命令來取得叢集狀態的報告
ndb_mgm> SHOW
Cluster Configuration
---------------------
[ndbd(NDB)] 1 node(s)
id=2 @127.0.0.1 (Version: 8.4.0-ndb-8.4.0, Nodegroup: 0, *)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @127.0.0.1 (Version: 8.4.0-ndb-8.4.0)
[mysqld(API)] 3 node(s)
id=3 @127.0.0.1 (Version: 8.4.0-ndb-8.4.0)
id=4 (not connected, accepting connect from any host)
id=5 (not connected, accepting connect from any host)
此時,您已成功設定一個可運作的 NDB Cluster。您現在可以使用任何以 ENGINE=NDBCLUSTER
或其別名 ENGINE=NDB
建立的表格,將資料儲存在叢集中。