Chinaunix首页 | 论坛 | 博客
  • 博客访问: 315533
  • 博文数量: 163
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: -40
  • 用 户 组: 普通用户
  • 注册时间: 2017-03-08 00:28
文章分类

全部博文(163)

文章存档

2015年(2)

2014年(35)

2013年(28)

2012年(30)

2011年(22)

2010年(14)

2009年(8)

2008年(13)

2007年(11)

分类: Mysql/postgreSQL

2013-07-24 15:38:02

前面写一篇关于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) |
给主人留下些什么吧!~~