25.4.1 NDB Cluster 快速测试设置
为了熟悉基础知识,我们描述了最简单的可能配置,以使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在localhost
上端口1186查找管理服务器。
最后,切换到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集群。现在可以通过使用任何创建有ENGINE=NDBCLUSTER
或其别名ENGINE=NDB
的表来在集群中存储数据。