NDB群集的快速测试设置
为了使您熟悉基础知识,我们将介绍功能正常的NDB群集的最简单配置。之后,您应该能够根据本章其他相关部分提供的信息来设计所需的设置。
首先,您需要/var/lib/mysql-cluster
通过以系统root
用户身份执行以下命令来创建配置目录(例如):
shell>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 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_mgmd管理服务器。默认情况下,它尝试读取config.ini
其当前工作目录中的文件,因此将位置更改为文件所在的目录,然后调用ndb_mgmd:
shell>cd /var/lib/mysql-cluster shell>ndb_mgmd
然后通过运行ndbd启动单个数据节点:
shell>ndbd
有关启动ndbd时可以使用的命令行选项,请参见“ NDB群集程序的公用选项-NDB群集程序的公用选项”。
默认情况下,ndbdlocalhost
在端口1186上查找管理服务器。
注意如果从二进制压缩包安装了MySQL,则需要明确指定ndb_mgmd和ndbd服务器的路径。(通常,这些内容可以在中找到
/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 Welcometo the MySQL monitor. Commandsend with ; or \g. Your MySQLconnection id is 1to server version: 8.0.21Type '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
表:
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)
要检查您的节点设置是否正确,请启动管理客户端:
shell>ndb_mgm
在管理客户端中使用SHOW命令获取有关群集状态的报告:
ndb_mgm>SHOW Cluster Configuration --------------------- [ndbd(NDB)] 1 node(s) id=2 @127.0.0.1 (Version: 8.0.20-ndb-8.0.20, Nodegroup: 0, *) [ndb_mgmd(MGM)] 1 node(s) id=1 @127.0.0.1 (Version: 8.0.20-ndb-8.0.20) [mysqld(API)] 3 node(s) id=3 @127.0.0.1 (Version: 8.0.20-ndb-8.0.20) id=4 (not connected, accepting connect from any host) id=5 (not connected, accepting connect from any host)
至此,您已经成功设置了一个正常工作的NDB集群。现在,您可以使用使用ENGINE=NDBCLUSTER
或其别名创建的任何表将数据存储在集群中ENGINE=NDB
。