快捷搜索:   nginx

MySQL Cluster配置step by step

公司有个项目是测试distributed DB,其中一项是针对MySQL Cluster测试

于是花了两天时间装机器和MySQL Cluster。整个过程还是比较顺利的,当然如果对MySQL常用命令比较熟悉的话会更顺利。

留下step by step配置方案,以防忘记。

    MySQL Cluster是一种share nothing的机制,跟OracleRAC需要共享存储方案是不一样的。

    他包含三种节点(node):

Data node:用来存放数据的节点,数据类型是NDB Cluster,放在该节点的内存里。

SQL node:mysql服务器/客户端节点。

MGM node:管理节点,纵观全局的一个配置节点。

    所谓的节点,其实也就是相应的进程而已,所以我们可以将不同节点放在同一个机器上。所以理论上,我们只需要一台物理机器就可以玩MySQL Cluster了。

稍微了解了一点理论知识,就可以轻松配置好一个Cluster环境,但其他知识需要在以后的运维和测试过程中自己发掘。MySQL也是一个很庞大的知识体系,不逊于Oracle。

接下来Step by Step讲解如何配置MySQL Cluster,即使你只有0基础,相信也能够很轻松的配置。

1.    准备硬件资源

我拿到了四台普通PC机作为测试机,并全部装好RedHat EL5操作系统。

四台机器全部通过DHCP获得4个外部IP地址。但为了节点之间内部稳定,又给每台机器设定了一个子网静态IP地址,节点之间的通信就可以通过这个静态地址联系了。

这四台机器hostname取名为mysql1/2/3/4,静态地址为:

2.    部署节点

我们采用1个MGM node,2个SQL node,2个data node的分布方式。

其中由于资源限制,MGM node和一个SQL node部署在同一台机器上。

部署如下:

3.    安装MySQL软件

在所有节点上安装mysql-5.0.88-linux-i686-icc-glibc23.tar.gz

下载地址:

直接gunzip and tar -xvf解压就可以用了。

我们解压后放在/home/oracle/mysql

4.    建立OS user用来run mysql

在这里我们使用oracle用户(oracle组)。

5.    MGM node的配置和启动

登入mysql4 as oracle user。

cd /home/oracle/mysql

mkdir mgmdata

建立全局配置文件mgmd.cnf,内容为:(只需特别注意红色部分的配置)

启动MGM node:

ndb_mgmd -f mgmd.cnf

ps -ef|grep mgmd|grep -v grep查看MGM node 进程是否已经起来。

[oracle@mysql4 mysql]$ ps -ef|grep mgmd|grep -v grep
Q.M V t{,D*} W7J s-I0e0oracle   22939     1 0 Nov27 ?        00:00:00 ndb_mgmd -f mgmd.cnf

再登入MGM控制台(ndb_mgm 192.168.123.4 2001),用show命令查看各个节点的状态。

(以下结果是所有配置完全后的状态,刚配好MGM node后应该看到所有其他节点都是not connected)

[oracle@mysql4 mysql]$ ndb_mgm 192.168.123.4 2001ITPUB个人空间.? x#g%i2S'Z \,t m
-- NDB Cluster -- Management Client --ITPUB个人空间1N6t X w1O
ndb_mgm> show
n T |+k S V0Connected to Management Server at: 192.168.123.4:2001
4~ E5k"q N [ g0Cluster ConfigurationITPUB个人空间 A,V o l*Q A V
---------------------ITPUB个人空间 U Y P H M c @2h e C*U
[ndbd(NDB)]     2 node(s)
@3a#u k a R ]x0id=2    @192.168.123.1 (Version: 5.0.88, Nodegroup: 0, Master)
/q3V"I L O.x4_-~0id=3    @192.168.123.2 (Version: 5.0.88, Nodegroup: 1)

[ndb_mgmd(MGM)] 1 node(s)ITPUB个人空间 {"R | d W1I/V \
id=1    @192.168.123.4 (Version: 5.0.88)

[mysqld(API)]   2 node(s)
C n t m:}u0id=4    @192.168.123.3 (Version: 5.0.88)ITPUB个人空间 @$vm q h p
id=5    @192.168.123.4 (Version: 5.0.88)

6.    Data node的配置和启动。

登入mysql1和mysql2 as oracle user。

cd /home/oracle/mysql

mkdir ndbdata

以下以配置Data node 1为例:

建立ndbd1.cnf文件,内容为:(只需特别注意红色部分的配置)

启动Data node 1:

ndbd --defaults-file=ndbd1.cnf --initialITPUB个人空间7I w k o9s
(注意:--initial只需在第一次启动时加该参数)

查看ndb进程启动了:

[oracle@mysql1 mysql]$ ps -ef|grep ndb|grep -v grepITPUB个人空间 j b,U x7S+d!l)d.L;H:I
oracle    5864     1 0 Nov27 ?        00:00:00 ndbd --defaults-file=ndbd1.cnfITPUB个人空间 R k m v }$E \ O r
oracle    5865 5864 0 Nov27 ?        00:03:51 ndbd --defaults-file=ndbd1.cnf

并且在MGM node的控制台中show命令可以看到Data node不再是not connected状态了

Q {4t N u I4I E q {0同理配置Data node 2.

7.    SQL node的配置和启动。

登入mysql3和mysql4 as oracle user。

以配置SQL node 1为例。

cd /home/oracle/mysql

mkdir data1

建立my.cnf,内容为:

建立一个新库:

scripts/mysql_install_db --datadir=/home/oracle/mysql/data1ITPUB个人空间z.~ W { ^
启动MySQL Server:

mysqld_safe &

同理配置和启动SQL node 2。

当一切都顺利完工后,登入MGM node,确保所有的节点都连接上:

ndb_mgm> showITPUB个人空间1{ v j K5J,W2{
Cluster ConfigurationITPUB个人空间 q/Z I:s)} V+S _%^
---------------------
j1j9\;e h h Z$Z'_ N0[ndbd(NDB)]     2 node(s)ITPUB个人空间 k L+q N k w zm ^
id=2    @192.168.123.1 (Version: 5.0.88, Nodegroup: 0, Master)ITPUB个人空间 P.F6W M Q u v1y"x#d
id=3    @192.168.123.2 (Version: 5.0.88, Nodegroup: 1)

[ndb_mgmd(MGM)] 1 node(s)
~#U#}/| C f t;] D2n0id=1    @192.168.123.4 (Version: 5.0.88)

[mysqld(API)]   2 node(s)ITPUB个人空间 M ~,o a b)l u r T+n&v
id=4    @192.168.123.3 (Version: 5.0.88)
.y P z:O W-\;s l+O)n0id=5    @192.168.123.4 (Version: 5.0.88)

8.    建个表测试一下:

在SQL node 1上建个表:

create table testbyhao(ITPUB个人空间 A t ?-O x
id mediumint unsigned not null auto_increment primary key,
6x+s |)t2@ s v0name varchar(20) not null default ''
6U x ^ U,d0)engine = ndbclusterdefault charset utf8;

insert into testbyhao values(1, '11');ITPUB个人空间 I8P s(n W,g
insert into testbyhao values(2, '22');

在SQL node 2上能看到此表即可。

至此,一个简单的MySQL Cluster环境就搭建成功了。

有几点需要记住:

1.启动各个节点的顺序永远是:MGM node,Data Node,SQL node。

2.engine=ndbcluster或者engine=ndb的表才能使用Data node所存储。其他engine即放在SQL node本地,就像单机版一样。

3.多个节点放在一台机器上时,需要给每个节点分配不同端口号以此区分。

(以后奉上其他MySQL Cluster知识点。)

顶(0)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论