标签: mysql cluster7.5
关于mysqlcluster的安装,网上文章良莠不济,大多数都是错误的过时的.
由于项目需要搭建一个mysql集群,最后选定了 mysql cluster7.5
期间踩了各种坑,最后才在mysqlcluster的官网上熟读了官网文档后才搭建完成,投入使用.
最后总结出此文帮助后来者少踩坑.另外学习一门新知识最好去它的官网,少踩坑.
参考资料: mysqlcluster官网
mysql cluster搭建
MySQL Cluster是基于无共享的可由多台服务器组成的、同时对外提供数据管理服务的分布式集群系统。通过合理的配置,可以将服务请求在多台物理机上分发实现负载均衡 ;同时内部实现了冗余机制,在部分服务器宕机的情况下,整个集群对外提供的服务不受影响,从而能达到99.999%以上的高可用性。
MySQL Cluster设计之初出于性能考虑,将数据完全存放在内存当中,因此MySQL Cluster可以当作一种分布式的内存数据库。随着MySQL Cluster技术的成熟和需求的增加,目前MySQL Cluster已支持磁盘存储,可以指定数据表存储在磁盘上,减少MySQL Cluster集群对内存的需求,从而实现存储更大的容量。
MySQL从结构看,由3类节点(计算机或进程)组成,分别是:
管理(MGM)节点:这类节点的作用是管理MySQL Cluster内的其他节点,如提供配置数据、启动并停止节点、运行备份等。由于这类节点负责管理其他节点的配置,应在启动其他节点之前首先启动这类节点。MGM节点是用命令“ndb_mgmd”启动的。
配置文件为: config.ini
数据节点:这类节点用于保存 Cluster的数据。数据节点的数目与副本的数目相关,是片段的倍数。例如,对于两个副本,每个副本有两个片段,那么就有4个数据节点。不过没有必要设置多个副本。数据节点是用命令“ndbd”启动的。
配置文件为:my.ini
SQL节点:这是用来访问 Cluster数据的节点。对于MySQL Cluster,客户端节点是使用NDB Cluster存储引擎的传统MySQL服务器。通常,SQL节点是使用命令“mysqld –ndbcluster”启动的,或将“ndbcluster”添加到“my.cnf”后使用“mysqld”启动。
配置文件为:my.ini
“MySQL实验室”推荐使用MySQL Cluster 7.x版本。MySQL Cluster 7.x拥有在线增加节点、多线程等新特性。
管理服务器(MGM节点)负责管理 Cluster配置文件和 Cluster日志。 Cluster中的每个节点从管理服务器检索配置数据,并请求确定管理服务器所在位置的方式。当数据节点内出现新的事件时,节点将关于这类事件的信息传输到管理服务器,然后,将这类信息写入 Cluster日志。
节点说明:
表21.4示例群集中节点的网络地址
节点 IP地址
管理节点(mgmd) 198.51.100.10
SQL节点(mysqld) 198.51.100.20
数据节点“A”(ndbd) 198.51.100.30
数据节点“B”(ndbd) 198.51.100.40
每个NDB群集主机必须安装正确的可执行程序。
没有必要在管理节点主机和数据节点主机上安装MySQL服务器二进制文件。建议您还在管理服务器主机上安装管理客户端(ndb_mgm)。
在Linux上安装NDB集群可以使用Oracle的预编译二进制文件(作为.tar.gz压缩文件下载),RPM软件包(也可从Oracle获得)或源代码完成
参考: 在Linux上安装NDB群集二进制版本(用google chrome 打开翻译该页面)
按照上面安装完成后,接下来开始下一步:配置
每个数据节点或SQL节点都需要一个my.cnf文件,该 文件提供两条信息:一个连接字符串,告诉节点在哪里找到管理节点,另一条是告诉该主机上的MySQL服务器(托管数据节点的机器)以启用该 NDBCLUSTER存储引擎。
管理节点需要一个config.ini 文件,告诉它要维护多少副本,为每个数据节点上的数据和索引分配多少内存,在哪里找到数据节点,在每个数据节点上将数据保存到磁盘的位置以及在哪里查找任何SQL节点。
my.cnf数据节点所需 的文件非常简单。配置文件应该位于/etc目录中,并且可以使用任何文本编辑器进行编辑。(如果该文件不存在,则创建该文件。)
对于我们示例设置中的每个数据节点和SQL节点, my.cnf应该如下所示:
[mysqld]
# Options for mysqld process:
ndbcluster # run NDB storage engine
[mysql_cluster]
# Options for NDB Cluster processes:
ndb-connectstring=198.51.100.10 # location of management server
输入上述信息后,保存该文件并退出文本编辑器。为托管数据节点“ A ”,数据节点“ B ”和SQL节点的计算机执行此操作
配置管理节点的第一步是创建可以找到配置文件的目录,然后创建文件本身。
shell> mkdir /var/lib/mysql-cluster
shell> cd /var/lib/mysql-cluster
shell> vi config.ini
```
对于我们的代表设置,该config.ini 文件应该如下所示:
```bash
[ndbd default]
# Options affecting ndbd processes on all data nodes:
NoOfReplicas=2 # Number of replicas
DataMemory=80M # How much memory to allocate for data storage
IndexMemory=18M # How much memory to allocate for index storage
# For DataMemory and IndexMemory, we have used the
# default values. Since the "world" database takes up
# only about 500KB, this should be more than enough for
# this example NDB Cluster setup.
ServerPort=2202 # This the default value; however, you can use any
# port that is free for all the hosts in the cluster
# Note1: It is recommended that you do not specify the port
# number at all and simply allow the default value to be used
# instead
# Note2: The port was formerly specified using the PortNumber
# TCP parameter; this parameter is no longer available in NDB
# Cluster 7.5.
[ndb_mgmd]
# Management process options:
HostName=198.51.100.10 # Hostname or IP address of MGM node
DataDir=/var/lib/mysql-cluster # Directory for MGM node log files
[ndbd]
# Options for data node "A":
# (one [ndbd] section per data node)
HostName=198.51.100.30 # Hostname or IP address
NodeId=2 # Node ID for this data node
DataDir=/usr/local/mysql/data # Directory for this data node's data files
[ndbd]
# Options for data node "B":
HostName=198.51.100.40 # Hostname or IP address
NodeId=3 # Node ID for this data node
DataDir=/usr/local/mysql/data # Directory for this data node's data files
[mysqld]
# SQL node options:
HostName=198.51.100.20 # Hostname or IP address
# (additional mysqld connections can be
# specified for this node for various
# purposes such as running ndb_restore)
在创建了所有配置文件并指定了这些最小选项后,即可开始启动群集并验证所有进程正在运行。
配置完成后启动集群并不是非常困难。每个群集节点进程必须分别启动,并在其所在的主机上启动。应首先启动管理节点,然后启动数据节点,最后启动任何SQL节点
从系统shell发出以下命令以启动管理节点进程:
shell> ndb_mgmd -f /var/lib/mysql-cluster/config.ini
首次启动时, 必须使用 -f
选项告知ndb_mgmd在哪里查找其配置文件 。 -f–config-file
运行以下命令启动 ndbd进程:
shell> ndbd
shell> service mysql start
或者
shell> mysqld_safe &
注意此步骤不需要单独安装 mysql,如果你启动不了,查看是否之前在第一步安装时已经把mysql.server 加到服务里面
如果一切顺利,并且集群已正确设置,则集群现在应该可以运行。您可以通过调用ndb_mgm管理节点客户端来进行测试。输出结果应该如下所示,尽管您可能会在输出中看到一些细微差异,具体取决于您使用的MySQL的确切版本:
shell> ndb_mgm
-- NDB Cluster -- Management Client --
ndb_mgm> SHOW
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @198.51.100.30 (Version: 5.7.21-ndb-7.5.10, Nodegroup: 0, *)
id=3 @198.51.100.40 (Version: 5.7.21-ndb-7.5.10, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @198.51.100.10 (Version: 5.7.21-ndb-7.5.10)
[mysqld(API)] 1 node(s)
id=4 @198.51.100.20 (Version: 5.7.21-ndb-7.5.10)
此处引用SQL节点 [mysqld(API)],它反映了mysqld进程充当NDB集群API节点的事实 。
您现在应该准备好使用NDB群集中的数据库,表格和数据.
参考带表格和数据的NDB群集示例
参考:安全关闭并重新启动NDB群集
参考:升级和降级NDB集群