21.3.1 NDB 群集的快速测试设置

为了使您熟悉基础知识,我们将介绍功能正常的 NDB 群集的最简单配置。之后,您应该能够根据本章其他相关部分提供的信息来设计所需的设置。

首先,您需要通过以系统root用户身份执行以下命令来创建诸如/var/lib/mysql-cluster之类的配置目录:

shell> mkdir /var/lib/mysql-cluster

在此目录中,创建一个名为config.ini的文件,其中包含以下信息。根据您的系统的需要,分别为HostNameDataDir替换适当的值。

# 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 don't know the hostname for your machine, use localhost.
# The DataDir parameter also has a default value, but it is recommended to
# set it explicitly.
# Note: [db], [api], and [mgm] are aliases for [ndbd], [mysqld], and [ndb_mgmd],
# respectively. [db] is deprecated and should not be used in new installations.

[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_mgmdManagement 服务器。默认情况下,它尝试读取其当前工作目录中的config.ini文件,因此将位置更改为文件所在的目录,然后调用ndb_mgmd

shell> cd /var/lib/mysql-cluster
shell> ndb_mgmd

然后通过运行ndbd启动单个数据节点:

shell> ndbd

有关在启动ndbd时可以使用的命令行选项,请参见第 21.4.32 节“ NDB 群集程序的公用选项-NDB 群集程序的公用选项”

默认情况下,ndbd在端口 1186 上的localhost处查找 Management 服务器。

Note

如果从二进制压缩包安装了 MySQL,则需要明确指定ndb_mgmdndbd服务器的路径。 (通常,它们将在/usr/local/mysql/bin中找到.)

最后,将位置更改为 MySQL 数据目录(通常为/var/lib/mysql/usr/local/mysql/data),并确保my.cnf文件包含启用 NDB 存储引擎所需的选项:

[mysqld]
ndbcluster

现在,您可以照常启动 MySQL 服务器:

shell> mysqld_safe --user=mysql &

请稍等片刻,以确保 MySQL 服务器正常运行。如果您看到通知mysql ended,请检查服务器的.err文件以找出问题所在。

如果到目前为止一切顺利,您现在就可以开始使用集群了。连接到服务器并验证NDBCLUSTER存储引擎已启用:

shell> mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 5.7.32

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
...

前面示例输出中显示的行号可能与系统上显示的行号不同,这取决于服务器的配置方式。

尝试创建一个NDBCLUSTERtable:

shell> 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=latin1
1 row in set (0.00 sec)

要检查您的节点设置是否正确,请启动 ManagementClient 端:

shell> ndb_mgm

在 ManagementClient 端中使用 SHOW 命令来获取有关群集状态的报告:

ndb_mgm> SHOW
Cluster Configuration
---------------------
[ndbd(NDB)]     1 node(s)
id=2    @127.0.0.1  (Version: 5.7.31-ndb-7.5.20, Nodegroup: 0, *)

[ndb_mgmd(MGM)] 1 node(s)
id=1    @127.0.0.1  (Version: 5.7.31-ndb-7.5.20)

[mysqld(API)]   3 node(s)
id=3    @127.0.0.1  (Version: 5.7.31-ndb-7.5.20)
id=4 (not connected, accepting connect from any host)
id=5 (not connected, accepting connect from any host)

至此,您已经成功设置了一个正常工作的 NDB 集群。现在,您可以使用通过ENGINE=NDBCLUSTER或别名ENGINE=NDB创建的任何 table 将数据存储在群集中。