mysql cluster (mysql 集群)安装配置方案(推荐,写的比较清楚)

http://www.cnblogs.com/jackluo/archive/2013/01/19/2868152.html


一、准备

1、准备服务器

计划建立有5个节点的MySQL CLuster体系,需要用到5台服务器,但是我们做实验时没有这么多机器,可以只用2台,我就是一台本机,一台虚拟机搭建了有5个节点的MySQL CLuster体系,将一个SQL节点一个数据节点一个SQL节点放在了一台服务器上(192.168.1.252),将另一个SQL节点和一个数据节点放在了另外一台服务器上(192.168.1.52)。

节点配置说明
节点对应的IP和端口
管理节点(1个)192.168.1.252
SQL节点 (2个)192.168.1.252:3331
192.168.1.52:3331
数据节点 (2个)192.168.1.252
192.168.1.52

2、准备软件包

现在的mysql提供了一个专门作集群的安装包,这样就不用一个个的下载所需要的工具了。我在网上找到了最新的而且下载比较快的资源,第一步先是下载,有200M左右。

cd /var/tmp

wget http://mysql.ntu.edu.tw/Downloads/MySQL-Cluster-7.1/  

mysql-cluster-gpl-7.1.9a-linux-i686-glibc23.tar.gz

二、安装

1、数据节点和SQL节点

第一步 添加mysql用户和组,这是必需的。

groupadd mysql

useradd -g mysql mysql

第二步 开始安装,下载的版本是免编译的,复制过来就可以用了。

cd /var/tmp

tar -C /usr/local-zxvf mysql-cluster-gpl-7.1.9a-linux-i686-glibc23.tar.gz

cd /usr/local

mv mysql-cluster-gpl-7.1.9a-linux-i686-glibc23.tar.gz mysql

第三步 在mysql修改目录权限,这也是必需的,不然第四步会报错的。

cd mysql

chown -R root .

chown -R mysql data

chgrp -R mysql .

第四步 安装初始的数据库表

scripts/mysql_install_db --user=mysql

第五步 设置mysql服务为开机自启动

cp support-files/mysql.server /etc/rc.d/init.d/mysqld

chmod +x /etc/rc.d/init.d/mysqld

chkconfig --add mysqld

第六步 启动mysql服务,如果报错请参考

service mysqld start

这六步,在252和52服务器上都执行一次,数据节点和SQL节点就算安装好了。

2、管理节点

管理节点的安装更简单,只要在252服务器上复制些文件出来就行了,虽然只有一步,便这一步在目前环境下(管理节点和SQL节点在同一台服务器上)也不是必需的。

cd mysql

cp bin/ndb_mgm*/usr/local/bin

cd /usr/local/bin

chmod +x ndb_mgm*

管理节点只要ndb_mgm和ndb_mgmd两个文件和一个配置文件即可,因此把这三个文件复制到那里,那里就是管理节点了。ndb_mgmd是mysql cluster管理服务器,ndb_mgm是客户端管理工具,等一下会用到它们的。到目前为止两个SQL节点两个数据节点和一个管理节点都安装完成了,但是还不能工作,得进行配置,把这几个节点联系在一起协同工作。

三、配置

1、数据节点和SQL节点

mysql服务启动时会默认加载/etc/my.cnf作为其配置文件,要将一个mysql服务器配置成一个数据节点和SQL节点也非常的简单,这是配置前的my.cnf的内容:

[client]

port    =3306

socket  =/tmp/mysql.sock

[mysqld]

basedir         =/usr/local/mysql/

datadir         =/usr/local/mysql/data

user            = mysql

log-error       =/var/lib/mysql/mysqld.err

 

只要在内容结尾加上4行就将这个mysql服务器变成了一个数据节点和SQL节点。

ndbcluster   #运行NDB存储引擎

#指定管理节点  以上两行声明其为SQL节点

ndb-connectstring=192.168.1.252   

[mysql_cluster]

#指定管理节点  以上两行声明其为数据节点

ndb-connectstring=192.168.1.252   

注意两台服务器都得这样配置。

2、管理节点

管理节点的配置复杂一点,在管理服务器252的/var/lib/mysql-cluster/目录中创建config.ini文件。

cd /var/lib

mkdir mysql-cluster

cd mysql-cluster

vim config.ini

在config.ini文件中添加以下内容:

[NDBD DEFAULT]

NoOfReplicas=1    #每个数据节点的镜像数量

DataMemory=500M   #每个数据节点中给数据分配的内存

IndexMemory=300M  #每个数据节点中给索引分配的内存

[TCP DEFAULT]

portnumber=2202   #数据节点的默认连接端口

[NDB_MGMD]        #配置管理节点

hostname=192.168.1.252

datadir=/var/lib/mysql-cluster/  #管理节点数据(日志)目录

[NDBD]            #数据节点配置

hostname=192.168.1.252

datadir=/usr/local/mysql/data/   #数据节点目录

[NDBD]

hostname=192.168.1.52

datadir=/usr/local/mysql/data/

[MYSQLD]   #SQL节点目录

hostname=192.168.1.252

[MYSQLD]

hostname=192.168.1.52

[NDBD DEFAULT]:表示每个数据节点的默认配置在每个节点的[NDBD]中不用再写这些选项,只能有一个。
[NDB_MGMD]:表示管理节点的配置,只有一个。
[NDBD]:表示每个数据节点的配置,可以有多个。
[MYSQLD]:表示SQL节点的配置,可以有多个,分别写上不同SQL节点的IP地址,也可以什么都不写,只保留一个空节点,表示任意一个IP地址都可以进行访问,此节点的个数表明了可以用来连接数据节点的SQL节点总数。

四、启动

1、管理节点

mysql cluster 需要各个节点都 进行启动后才可以工作,节点的启动顺序为管理节点->数据节点->SQL节点。首先启动管理节点

cd /usr/local/bin

./ndb_mgmd -f /var/lib/mysql-cluster/config.ini

命令行中的ndb_mgmd是mysql cluster的管理服务器,后面的-f表示后面的参数是启动的参数配置文件。如果在启动后过了几天又添加了一个数据节点,这时修改了配置文件启动时就必须加上--initial参数,不然添加的节点不会作用在mysql cluster中。

./ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial

启动时可能会报个WARNING,如WARNING  -- at line 7: [TCP] portnumber is deprecated,这个不用管。可以正常工作的。

2、数据节点

安装后第一次启动数据节点时要加上--initial参数,其它时候不要加,除非是在备份、恢复或配置变化后重启时。

cd mysql/bin/ndbd --initial 

如果显示以下信息说明启动完成:

2010-12-31 12:48:03 [ndbd] INFO     -- Angel connected to '192.168.1.252:1186'
2010-12-31 12:48:03 [ndbd] INFO     -- Angel allocated nodeid: 3

3、SQL节点

service mysqld start

4、客户端管理

cd /usr/local/bin

./ndb_mgm

这时就进入到客户端,可以对mysql cluster进行各项操作,进入后会有ndb_mgm > 提示符出现,首先来查看各节点的连接情况,在ndb_mgm> 提示符下输入show:

ndb_mgm> show

ClusterConfiguration

---------------------

[ndbd(NDB)]     2 node(s)

id=2    @192.168.1.252  (mysql-5.1.51 ndb-7.1.9,Nodegroup:0,Master)

id=3    @192.168.1.52  (mysql-5.1.51 ndb-7.1.9,Nodegroup:1)

[ndb_mgmd(MGM)]1 node(s)

id=1    @192.168.1.252  (mysql-5.1.51 ndb-7.1.9)

[mysqld(API)]   2 node(s)

id=4    @192.168.1.252  (mysql-5.1.51 ndb-7.1.9)

id=5    @192.168.1.52  (mysql-5.1.51 ndb-7.1.9)

可以看到各个节点已经连接上了,至此,mysql cluster配置完成。

五、关闭

mysql cluster的关闭也很简单,只需在ndb_mgm> 提示符下输入 shutdown即可,这时会显示各节点的关闭信息,再输入exit即可退出ndb_mgm管理,回到shell中。虽然mysql cluster 关闭了,但是SQL节点的mysql服务并不会停止的。接下来就可以做各种试验了。



五 配置

通常情况下,需要为每个节点编写独立的配置信息,但因为数据节点和SQL节点的配置信息相同,所以若数据节点和SQL节点被设计在同一台计算机上的话,只用编写一个配置文件即可。则本次实验,本人只需编写三个配置文件即可,分别为:192.168.3.47上的管理节点(MGM)配置文件,SQL节点/数据节点配置文件和192.168.4.128上的SQL节点/数据节点的配置文件。

每个数据节点或者SQL节点需要一个my.cnf,该文件提供了两类信息:connectstring(连接字符),用于通知节点到哪里找到MGM节点;以及一行ndbcluster,用户通知该主机(容纳数据节点的机器)上的MySQL服务器运行在NDB模式下。

管理节点需要congfig.ini文件,该文件通知节点有多少需要维护的副本,需要在每个数据节点上为数据和索引分配多少内存,数据节点的位置,在每个数据节点上保存数据的磁盘位置,以及SQL节点的位置。

5.1 配置数据节点和SQL节点

数据节点所需要的my.cnf文件相当简单。配置文件应位于/etc目录下(如有必要,可手动创建该文件),例如:

vi /etc/my.cnf

对于每个SQL节点和数据节点,my.cnf文件类似于:

# Options for mysqld process:
[MYSQLD]
ndbcluster                      # run NDB engine
ndb-connectstring=192.168.3.47  # location of MGM node

[MYSQL_CLUSTER]
ndb-connectstring=192.168.3.47  # location of MGM node

输入上述内容后,保存文件。需要在容纳数据节点和SQL节点的每一台主机上执行上述操作。

5.2 配置管理节点

配置MGM节点的第一步是创建目录,该目录用户存放配置文件,然后创建配置文件本身。例如(以根用户身份运行):

mkdir /var/lib/mysql-cluster
cd /var/lib/mysql-cluster
vi config.ini

对于基本的典型设置,config.ini文件应类似于:

# Options affecting ndbd processes on all data nodes:
[NDBD DEFAULT]   
NoOfReplicas=2
DataMemory=80M
IndexMemory=18M

# TCP/IP options:
[TCP DEFAULT]   
#portnumber=2202

# Management process options:
[NDB_MGMD]         
nodeid=1         
HostName=192.168.3.47
DataDir=/var/lib/mysql-cluster/

# Options for data node :
[NDBD]                         
nodeid=12
HostName=192.168.4.128
DataDir=/usr/local/mysql/data/

# Options for data node :
[NDBD] 
nodeid=11                     
HostName=192.168.3.47
DataDir=/usr/local/mysql/data

# SQL node options:
[MYSQLD]
nodeid=21                     
HostName=192.168.3.47
[MYSQLD]
nodeid=22
HostName=192.168.4.128

一旦创建了所有的配置文件并指定了这些最低选项,可启动簇,并验证所有进程均能正常运行。

注释:簇管理节点的默认端口是1186,数据节点的默认端后是2202。

六 首次启动

完成配置后,启动簇并不困难。必须在数据节点所在的主机上分别启动每个簇节点进程。尽管能够按任何顺序启动节点,但还是建议,首先启动管理节点,然后启动存储节点,最后启动SQL节点。

1. 在管理节点上,从系统shell执行以下指令以启动MGM节点进程:

shell> ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial

可使用nbd_mgm指令登录到ndb_mgm客户端,登录后,可使用show指令来查看簇中个节点情况。

注意,启动MGM时,必须用-f或者–config-file选项,告诉ndb_mgmd到哪里找到配置文件。首次启动时必须选用–initial选项,或者更改了MGM节点的配置信息后,也需选用–initial选项。

2. 在每台数据节点主机上,对于首次启动,运行下述命令启动NDBD进程:

shell> ndbd --initial

注意,应仅在首次启动时ndbd时,或者在备份/恢复或者配置变化后重启ndbd时使用“–initial”参数,这很重要,因为该参数会使数据节点删除由早期ndbd实例创建的,用于恢复的任何文件,包括恢复用日志文件。

3. 在每台SQL节点上,执行以下指令,以启动mysqld进程:

/var/tmp/mysql/bin/mysqld_safe --user=mysql  &

若执行此命令时出现不能同时写syslog和error.log的情况,则使用以下指令:

/var/tmp/mysql/bin/mysqld_safe --user=mysql  --skip-syslog &

MySQL服务器启动后,可使用nysql -u root -p指令登录到mysql。

如果一切顺利,并且已经正确设置了簇,那么簇现在应该应能运行。通过调用ndb_mgm管理节点客户端,可对其进行测试。结果如下图:

七 测试MySQL-Cluster

 7.1 常规测试

为了让数据表能够在cluster中正常复制,创建数据表时必须指定为ndbcluster引擎(engine=ndb或engine=ndbcluster)。

登录到192.168.3.47的mysql,然后创建一个新数据库songzi,并创建一个ndbcluster引擎的数据表test(id int,name char(10)),并向表中插入一条数据(0,songzi)。192.168.3.47上的操作及结果如下图:

然后登录192.168.4.128的mysql,可查看到数据已同步,并且新建的表及数据也存在。192.168.4.128上的操作及结果如下图:

 7.2 模拟NDB节点Crash

终止192.168.4.128上的NDB进程,执行以下指令查看NDB进程情况

ps -ef | grep ndbd

kill 24077
ps -ef | grep ndbd

具体操作及结果见下图:
 

也可以在ndb_mgm管理节点客户端查看到192.168.4.128上的NDB节点已停掉

然后分别登录到192.168.3.47和192.168.4.128的mysql,可发现依然能够查询到数据。结果如下图

192.168.3.47

192.168.4.128

此结果说明测试成功,即当有一个NDB节点Crash后,整个MySQL环境仍可以正常服务。

7.3 模拟SQL节点Crash

在上192.168.3.47上终止mysqld进程,可执行以下指令:

killall mysqld

也可以在ndb_mgm管理节点客户端查看到192.168.3.47上的SQL节点已停掉

登录到192.168.4.128上的mysql,可查看到数据依然存在

此结果说明测试成功,及当有一个SQL节点Crash后,整个MySQL-Cluster环境仍可以工作。

至此,整个MySQL-Cluster安装及配置实验已完成。实验结束后,可使用指令shell> ndb_mgm -e shutdown或者ndb_mgm>shutdown来关闭簇中的所有节点。



  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值