如何在单台服务器上安装 MySQL Cluster 进行测试

MySQL Cluster 是一种在无共享系统中实现内存数据库集群的技术。
无共享架构允许系统使用非常便宜的硬件,并且对硬件或者软件的特定要求最低。
MySQL 集群的设计没有任何单点故障。
它将标准 MySQL 服务器与称为 NDB 的内存集群存储引擎集成在一起。
MySQL Cluster 是指 MySQL 和 NDB 存储引擎的组合。
MySQL 集群由一组计算机组成,每台计算机运行一个或者多个进程,这些进程可能包括一个 MySQL 服务器、一个数据节点、一个管理服务器和(可能)一个专门的数据访问程序。

这篇文章解释了如何设置一个小型 MySQL 集群来做一些基本的测试、NDB API 开发,或者只是为了了解 MySQL 集群。
它描述了如何设置可以在本地工作站上运行的受限 MySQL 集群安装。
当然,这种设置永远不应该用于生产中。

首先,从安装最新的 MySQL Community 版本开始。
或者安装 MySQL 的 Max 版本,其中包括 MySQL Cluster,或者安装 Standard 版本以及集群存储引擎和操作系统的工具的二进制文件。

尚未启动 MySQL 服务器,在文本编辑器中打开或者创建文件 /etc/config.ini 并添加以下行:

# This configuration should not be used in production! 
[NDBD DEFAULT] 
NoOfReplicas = 2 
DataMemory = 80M # 80M is default 
IndexMemory = 18M # 18M is default 
DataDir = /var/mysql-cluster 
LockPagesInMainMemory = 1 # Make sure not to use swap 
[NDB_MGMD DEFAULT] 
DataDir = /var/mysql-cluster 
[NDB_MGMD] 
HostName = localhost 
[NDBD]HostName = localhost 
[NDBD] 
HostName = localhost 
[MYSQLD] 
[MYSQLD] 
[API]

接下来,通过打开或者创建文件 /etc/my.cnf 并添加以下文本来配置 MySQL 服务器:

[mysqld]
datadir=/var/mysql
ndbcluster
ndb_connectstring="localhost"

现在我们已准备好启动 MySQL 集群:首先启动管理节点,它将保存配置,使其可用于其他节点。
我们不必是 root 来启动它,但我们必须确保所有目录都可由我们启动的用户写入。
从命令行输入以下内容以启动管理节点:

ndb_mgmd -f /etc/config.ini

接下来,我们需要从命令行启动数据节点,如下所示:

ndbd -c localhost
ndbd -c localhost

要检查正在运行的内容,我们可以通过从命令行输入以下内容来使用管理客户端:

ndb_mgm -c localhost
ndb_mgm> SHOW

请注意,第二行是从 Management Client 中输入的,并且只输入了 SHOW 语句。
它应该返回与此类似的结果:

[ndbd(NDB)] 2 node(s) 
id=2 @127.0.0.1 (Version: 5.0.41, starting, Nodegroup: 0, Master) 
id=3 @127.0.0.1 (Version: 5.0.41, starting, Nodegroup: 0) 
[ndb_mgmd(MGM)] 1 node(s) 
id=1 (Version: 5.0.41) 
[mysqld(API)] 3 node(s) 
id=4 (not connected, accepting connect from any host) 
id=5 (not connected, accepting connect from any host) 
id=6 (not connected, accepting connect from any host)

在管理客户端中多次执行 SHOW 命令,直到“开始”状态消息消失。
最后启动的进程是 MySQL 服务器。
现在像往常一样启动 MySQL,或者输入如下内容:

mysqld_safe --defaults-file=/etc/my.cnf &

如果一切顺利,MySQL 应该正在运行,我们现在可以使用 NDB 存储引擎。
以 root 用户或者具有 CREATE 权限的用户登录 MySQL 后,尝试通过输入以下 SQL 语句来创建表:

CREATE TABLE table1 (
  col_id INT NOT NULL AUTO_INCREMENT, 
  col1 VARCHAR(20), 
  PRIMARY KEY (col_id) 
) ENGINE=NDB;

如果我们能够正确执行此操作,则我们已经运行了一个基本的 MySQL 集群。
设置生产环境与此类似,但我们将需要更多机器和更高级的配置。

日期:2020-09-17 00:11:42 来源:oir作者:oir