Mysql cluster7.2后,其靠谱度大大提高,业界也因为其官方宣传的卓越性能慢慢热起来。确实,每分钟1 Billion的查询响应绝对是一个令人振奋的数字!今天将我最近对其测试体验的一些心得拿出来,与大家分享。
一些说明:
shell> 提示符表示在linux的终端shell提示符
mysql>表示在sql节点上的mysql终端
mgmd>表示在cluster的管理控制台
cluster官方关系图
从图上我们可以知道,cluster由三种节点(node)组成:sql节点,数据节点和管理节点。sql节点(mysqld)是sql终端,接收各种sql语句。数据节点(ndbd或者ndbmtd)是cluster的数据存储和查询设备。管理节点(ndb_mgmd)是整个mysql 集群的控制器和配置器。基本上所有的cluster参数配置都在此设备进行。所有的节点都具有可扩展性。mysql cluster7.2支持高达255个节点,48个数据节点。
准备工作:
配置mysql cluster至少需要4台主机。在测试环境中,我使用了8台,虽然mysql说可以用很差的配置,但是你最好不用太差的机器,否则测试起来会很不爽。cluster本来就是为高可用,高性能数据库服务而生的。我测试用的机器配置如下(也不是很好):
CPU Inter xeon E1230 3.2G 4核
Mem 32G
一块500G sata硬盘7200
单网卡
分配如下
管理节点1个:10.237.2.173
sql节点2个:10.237.2.174-175
数据节点4个:10.237.2.177-180
memcached节点1个:10.237.2.176
开始安装
一、下载mysql cluster7.2
http://www.mysql.com/downloads/cluster/
二、安装SQL节点(mysqld)和Data节点(ndbd),管理节点
shell>mkdir -p /opt/soft/mysql
shell>tar -xzvf mysql-cluster-gpl-7.2.4-linux2.6-x86_64.tar.gz
shell>mv mysql-cluster-gpl-7.2.4-linux2.6-x86_64 /opt/soft/mysql
shell>cd /opt/soft/mysql
下面跟其他普通mysql服务器的安装完全一致(我们假设数据库的数据存放目录在/data/db)
shell>mkdir /data/db
shell>cd /opt/soft/mysql/
shell>groupadd mysql
shell>useradd -r -g mysql mysql
shell>chown -R mysql .
shell>chgrp -R mysql .
shell>chown -R mysql.mysql /data/db
shell>cp support-files/my-large.cnf /etc/my.cnf
shell> chown -R root .
shell>./scripts/mysql_install_db --user=mysql
shell>cp support-files/mysql.server /etc/init.d/mysql.server
三、配置mysql节点
在sql节点服务器上修改配置文件my.cnf
shell>vi /etc/my.cnf
在[mysqld]下面添加
ndbcluster
ndb-connectstring="10.237.2.173:1186"
四、配置数据节点
在数据节点上修改配置文件my.cnf
shell>vi /etc/my.cnf
在[mysqld]下面添加
#启用ndb引擎
ndbcluster
ndb-connectstring="10.237.2.173:1186"
#告知ndb引擎,管理节点在哪里
[ndbcluster]
ndb-connectstring="10.237.2.173:1186"
OK,短短几行就搞定,下面来配置管理节点
五、配置管理节点
在管理节点上创建一个目录存在日志
shell>mkdir -p /data/cluster
shell>cp /opt/soft/mysql/support-files/config.huge.ini /data/cluster/config.ini
编辑管理节点的配置文件config.ini
shell>vi /data/cluster/config.ini
其中重要的几项
- [NDBD DEFAULT]
- NoOfReplicas=2
- DataDir=/data/db
- #此值按数据库大小设置,官方给出了公式
- #(内存) 数据大小 *副本 * 1.25 = 数据库内存总需求
- #实例:50 GB * 2 * 1.25 = 125 GB
- #(数据大小 *副本 * 1.25)/节点数 = 每个节点的内存大小
- #实例:(2 GB * 2 * 1.25)/4 = 1.25 GB
- DataMemory=5120M
- IndexMemory=400M
- #此值设置为1的时候,ndb将不会把数据写入磁盘(意思就是shutdown后数据库就没了)
- Diskless=0
- #速度快,你可以改为1试试,具体含义参考mysql官方文档
- ODirect=0
- RedoBuffer=32M
- [MGM DEFAULT]
- PortNumber=1186
- DataDir=/data/cluster
- [TCP DEFAULT]
- SendBufferMemory=32M
- ReceiveBufferMemory=32M
- [NDB_MGMD]
- NodeId=1
- HostName=10.237.2.173
- ArbitrationRank=1
- [NDBD]
- NodeId=10
- HostName=10.237.2.177
- [NDBD]
- NodeId=11
- HostName=10.237.2.178
- [NDBD]
- NodeId=12
- HostName=10.237.2.179
- [NDBD]
- NodeId=13
- HostName=10.237.2.180
- [API]
- NodeId=20
- HostName=10.237.2.174
- ArbitrationRank=2
- [API]
- NodeId=21
- HostName=10.237.2.175
- [API]
- NodeId=22
- HostName=10.237.2.176
- #空几个在这里是有用的
- [API]
- [API]
- [API]
- [API]
好了。配置完成,我们开始按管理节点->数据节点->sql节点的次序依次启动
在管理节点上启动管理服务器
shell>/opt/soft/mysql/bin/ndb_mgmd -f /data/cluster/config.ini
在数据节点上启动数据节点
shell>/opt/soft/mysql/bin/ndbd --initial
--initial参数是当此数据节点第一次启动时使用,在以后启动时,此参数不需要(如果使用,会清空此节点的数据,慎之)。
此外,如果是多CPU,也可以使用
shell>/opt/soft/mysql/bin/ndbmtd --initial 当然启用多cpu增强性能,需要在config.ini配置里增加相应参数指明。
启动数据节点
在sql节点服务器上执行
shell>/etc/init.d/mysql.server start
完成后,回到管理节点,我们登录管理服务器控制台看看是否正常
shell>/opt/soft/mysql/bin/ndb_mgm
如果成功,会进入控制台
ndb_mgm>show
如果正常,会显示每个节点的连接情况,
如果不正常,可以查看日志。在数据节点的/data/db目录下,在管理节点的/data/cluster目录下,分别有各种日志。
祝大家配置顺利。后一篇将侧重分享下mysql cluster 7.2的性能。