前面写一篇关于windows单机安装mysql-cluster(1 管理节点 + 2 数据结点 + 3 SQL节点(API)), 在这篇文章中对此作些扩展,尝试多机布署,为了简化测试的流程,将其中的一个SQL节点放到linux系统中.详细过程如下:
1. 下载mysql-cluster免安装包
http://dev.mysql.com/downloads/cluster/
下载非安装版本.
windows下的版本为: mysql-cluster-gpl-noinstall-7.1.26-win32.zip
linux下的版本为: mysql-cluster-gpl-7.1.26-linux-x86_64-glibc23.tar.gz
上面的两个版本都是Binary Release.
2. 解压下载的安装包
例如最后放置的位置是
windows平台下: E:\Tools\mysql-cluster\
linux平台下: /opt/mysql-cluster/
windows机器IP: 172.18.2.38
linux机器IP: 172.18.2.87
3. 节点配置为1 mgmt node + 2 data nodes + 3 sql nodes
管理节点与数据节点放在windows机器上.
SQL节点(也叫API节点)放在linux上,只开1个节点,主要是为了测试多机布署.大家有兴趣,可以自己开一个节点本机,一个节点其它机器的windows系统,另外一个节点linux系统的.
创建配置文件夹
E:\Tools\mysql-cluster\conf
conf\config.ini
[ndbd default]
NoOfReplicas=2
[ndb_mgmd]
nodeid=1
hostname=localhost
[ndbd]
hostname=localhost
nodeid=2
[ndbd]
hostname=localhost
nodeid=3
[mysqld]
#nodeid=4 #此处注释掉,主要是为了配置方便,若加上了此项与下面的localhost,在启动的时候,此nodeid对应的主机必须与hostname的值一致
#hostname=localhost #此处的值有点需要注意,若想配置为其它机器,最好注释掉hostname,或者你的SQL节点基本上是固定的才有填的必要.
# 如果此处给值为localhost,后面再怎么在其它机器上开实例,连接都不会接受的.
[mysqld]
#nodeid=5
#hostname=localhost
[mysqld]
#nodeid=6
#hostname=localhost
MySQL实例配置文件(linux系统)
cd /opt/mysql-cluster
mkdir conf
vi my1.cnf
[mysql]
socket=/tmp/mycu1.sock
default-character-set=utf8
[mysqld]
ndbcluster
datadir=/opt/mysql-cluster/data/data1
basedir=/opt/mysql-cluster
server-id=6
port=9306
log-bin=cltest
log-bin-index=cltest
socket=/tmp/mycu1.sock
character-set-server=utf8
[mysql_cluster]
ndb-connectstring=172.18.2.38 #管理节点
windows平台下的mysql服务器实例配置文件见另一篇文章 http://blog.chinaunix.net/uid-11209572-id-3809119.html
初始化SQL实例(linux)
cd /opt/mysql-cluster/data
mkdir data1
mkdir data1/mysql
mkdir data1/test
cd .. #回到上级目录 /opt/mysql-cluster
perl ./scripts/mysql_install_db --basedir=/opt/mysql-cluster --datadir=/opt/mysql-cluster/data/data1
一般linux系统安装后,像CentOS,多数都会安装perl与python,主要是系统本身像升级等功能需要使用这些应用程序,若没有可自行安装即可.
初始化管理节点
bin\ndb_mgmd --initial -f conf\config.ini --configdir=E:\Tools\mysql-cluster
若之前已经初始化过了,但都是使用localhost的,此处需要加上--initial再初始化一次,否则将会一直显示只接受本机的节点. 执行show在bin\ndb_mgm可看到状态.
初始化两个数据节点
bin\ndbd --initial -c localhost:1186
bin\ndbd --initial -c localhost:1186
若之前已经有数据,此处就不要再次执行初始化了,直接启动就行,即去掉--initial,加上这个可能会将之前的数据清除掉.
启动SQL节点(linux)
cd /opt/mysql-cluster
./bin/mysqld --defaults-file=./conf/my1.cnf
此处为了演示,只开启这一个SQL节点,其它的可类似再开,设置不同的配置文件即可.也可以开其它运行在windows下的SQL节点.
此时查看Cluster的状态
bin\ndb_mgm
show
ndb_mgm> show
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @127.0.0.1 (mysql-5.1.67 ndb-7.1.26, Nodegroup: 0, Master)
id=3 @127.0.0.1 (mysql-5.1.67 ndb-7.1.26, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @127.0.0.1 (mysql-5.1.67 ndb-7.1.26)
[mysqld(API)] 3 node(s)
id=4 @172.18.2.87 (mysql-5.1.67 ndb-7.1.26)
id=5 (not connected, accepting connect from any host) #注意此处可以接受来自任何主机的SQL节点
id=6 (not connected, accepting connect from any host)
此时就基本上搭建成功了.
要使表支持NDB存储引擎,需要在创建表的时候显示使用engine=ndb,否则与使用普通的mysql实例是一致的.
对于SQL节点的MySQL,上面的例子中用的是MySQL-cluster中的执行程序. 对于windows下的版本,官方的二进制包是不支持的,如果不确定,可使用show engines 查看,对于5.0.x版本的,你会发现ndb与ndbcluster对应的支持项是NO,也就是不支持. 查看了下windows下的源码,确实是有NDB的,但我试了几次都无法生成NDB的工程文件,当然也就无法使用VS编译出包含NDB的二进制mysql版本了.这里有点小遗憾! 对于linux下的版本,查了下官方的包,有一个单独的NDB包,因此我想应该是可以在已有的mysql二进制版本下通过安装这个额外的包来支持NDB/NDBCLUSTER存储引擎的. 当然对于5.1以后的版本,有一个专门的mysql-cluster版本,当然也可以直接用这个了,布署更简单,方便.
参考链接:
阅读(1442) | 评论(0) | 转发(1) |