MySQL-Cluster 7.3.2 安装和配置

来源:互联网 发布:姚明nba数据统计 编辑:程序博客网 时间:2024/05/23 11:54
本文参考:
MySQL-Cluster7.2.5安装和配置
赵学智@行胜于言
http://www.cnblogs.com/seesea125/archive/2012/03/28/2421277.html

环境:
一台 172.28.23.237 做一个数据节点、SQL节点、管理节点
一台 172.28.23.240 做一个数据节点、SQL节点

操作系统:
均为 CentOS 6.4 64位

一. 下载MySql Cluster和解压

http://www.mysql.com/downloads/cluster/

先设置172.28.23.237,把MySql Cluster下载到一个目录下(例如:/Downloads)
# cd /Downloads
解压:(文件名以实际下载为准)
# tar -zxvf mysql-cluster-gpl-7.3.2-linux-glibc2.5-x86_64.tar.gz
注:
如果已经存在MySql,需要先删除。方法可以参考其他文章,这里有个可能不成功的例子:
如果能联网:
# yum remove mysql
否则手动删除mysql:
先看看都安装了什么包:
# rpm -qa | grep MySQL
然后把显示出来的这些包都卸载掉,例如:
# rpm -e MySQL-server-5.5.21-1.linux2.6
# rpm -e MySQL-client-5.5.20-1.linux2.6

二. 安装

把解压后的文件拷贝到/usr/local下,名字为mysql
# cp -r ~/Downloads/mysql-cluster-gpl-7.3.2-linux-glibc2.5-x86_64 /usr/local/mysql
# cd /usr/local/mysql
把mysql的目录设置成所有者为root:
# chown -R root .
把data目录设置所有者为mysql:
# chown -R mysql ./data
改成所属组为mysql:
# chgrp -R mysql .
安装:
# cd scripts/
# ./mysql_install_db -user=mysql --basedir=/usr/local/mysql

三. 设置mysql服务为开机自启动

给文件赋予可修改权限:
# chmod +x /etc/rc.d/init.d/mysqld
chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息,--add name:增加一项新的服务
# chkconfig --add mysqld

此时还不能开机自启,还需要设置环境变量
# vi /etc/profile
最后面加上两句:
PATH=$PATH:/usr/local/mysql/bin
export PATH

在172.28.23.240服务器上做同样操作。

四. 配置

1、配置管理节点
拷贝/usr/local/mysql/bin/ndb_mgm、ndb_mgmd两个文件到/usr/local/bin:
# cp /usr/local/mysql/bin/ndb_mgm* /usr/local/bin

# mkdir /var/lib/mysql-cluster
# vim /var/lib/mysql-cluster/config.ini
输入下面内容:
[ndbd default]
NoOfReplicas=1 #每个数据节点的镜像数量
DataMemory=200M  #每个数据节点中给数据分配的内存
IndexMemory=20M #每个数据节点中给索引分配的内存
[ndb_mgmd]  #配置管理节点
NodeId=1
hostname=172.28.23.237
datadir=/var/lib/mysql-cluster/ #管理节点数据(日志)目录
[ndbd]  #数据节点配置
NodeId=2
hostname=172.28.23.237
datadir=/usr/local/mysql/data/  #数据节点目录
[ndbd]
NodeId=3
hostname=172.28.23.240
datadir=/usr/local/mysql/data/
[mysqld]
hostname=172.28.23.237
[mysqld]
hostname=172.28.23.240
[mysqld] #一定要留一个空的,以备扩展使用,否则会出现Failed to allocate nodeid No free node id found for ndbd(NDB)错误
[mysqld]

注:
配置时, []右边的注释不要加上,否则系统不认。
[NDBD DEFAULT]:表示每个数据节点的默认配置在每个节点的[NDBD]中不用再写这些选项,只能有一个。
[NDB_MGMD]:表示管理节点的配置,只有一个。
[NDBD]:表示每个数据节点的配置,可以有多个。
[MYSQLD]:表示SQL节点的配置,可以有多个,分别写上不同SQL节点的IP地址。

2、配置数据节点和SQL节点
mysql服务启动时会默认加载/etc/my.cnf作为其配置文件,修改172.28.23.237上的my.cnf

[mysqld]
ndbcluster #运行NDB存储引擎
datadir=/usr/local/mysql/data
basedir=/usr/local/mysql
port=3306
[mysql_cluster]
ndb-connectstring=172.28.23.237 #声明管理节点

拷贝一份到另一台172.28.23.240
#scp /etc/my.cnf 172.28.23.240:/etc/

五. 启动

节点的启动顺序为管理节点->数据节点->SQL节点。
1、172.28.23.237上启动管理节点
# cd /usr/local/bin
# ./ndb_mgmd -f /var/lib/mysql-cluster/config.ini
注:ndb_mgmd是mysqlcluster的管理服务器,后面的-f表示后面的参数是启动的参数配置文件。如果在启动后过了几天又添加了一个数据节点,这时修改了配置文件启动时就必须加上--initial参数,不然添加的节点不会作用在mysql cluster中

2、启动数据节点
安装后第一次启动数据节点时要加上--initial参数,其它时候不要加,除非是在备份、恢复或配置变化后重启时
# cd /usr/local/mysql/bin/
# ./ndbd --initial

2012-03-28 02:01:38 [ndbd] INFO -- Angel connected to '172.28.23.237:1186'
2012-03-28 02:01:38 [ndbd] INFO -- Angel allocated nodeid: 2
出现这种信息表示启动成功。

3、启动SQL节点
# mysqld_safe --ndb_nodeid=5 --user=mysql &
同样方法,启动另外一个机器,注意nodeid的编号。

4、客户端查看
# cd /usr/local/bin
# ./ndb_mgm
ndb_mgm> show

Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @172.28.23.240 (mysql-5.6.11 ndb-7.3.2, Nodegroup: 0, Master)
id=3 @172.28.23.237 (mysql-5.6.11 ndb-7.3.2, Nodegroup: 1)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @172.28.23.237 (mysql-5.6.11 ndb-7.3.2)
[mysqld(API)] 4 node(s)
id=4 @172.28.23.240 (mysql-5.6.11 ndb-7.3.2)
id=5 @172.28.23.237 (mysql-5.6.11 ndb-7.3.2)
id=6 (not connected, accepting connect from any host)
id=7 (not connected, accepting connect from any host)
可以看到各个节点已经连接上了, mysql cluster配置完成.

如果看不到上述信息,可能是防火墙问题,你可以选择把CentOS的防火墙关掉,命令为:/etc/init.d/iptables stop

管理节点关闭:在ndb_mgm>提示符下输入shutdown,再输入exit即可退出。

六. 测试

从SQL节点A登录,创建数据库和表,进行简单测试。
mysql> create database zxztest ;
mysql> use zxztest;
Database changed
mysql> create table test1(id int,name varchar(10)) engine=ndb ;
mysql> insert into test1 values(1,'zhaoxuezhi');
mysql> select * from test1 ;

+------+---------+
| id   | name    |
+------+---------+
|    1 | zhaoxuezhi | 
+------+---------+

登陆B节点,查看效果,库,表和数据已经同步。
从B节点插入一条数据,同样登陆A,也能看到数据已经同步。