首页 > 代码库 > mysql-cluster 安装篇(3)---rpm简易安装法

mysql-cluster 安装篇(3)---rpm简易安装法

周氏一族,整理技术文档,给下一代留点教程......


网络架构

192.168.0.202    管理节点(MGM)

192.168.0.203    存储节点(NDB)

192.168.0.204    查询节点(API)

准备材料(可以到官网下载,解压拿出来这两个包)

MySQL-Cluster-client-gpl-7.3.5-1.el6.x86_64.rpm

MySQL-Cluster-server-gpl-7.3.5-1.el6.x86_64.rpm


开始安装之前,还是再三告知,mgm管理节点,只需要bin/ndb_mgmd 和 bin/ndb_mgm ;ndb存储节点,只需要 bin/ndb_mgm,知道这一点,那么应该就很容易理解我们下面的配置了



192.168.0.202 配置如下:

1、清理本机自带任何跟mysql有关的包

[root@localhost ~]# rpm -qa |grep mysql

mysql-5.1.61-4.el6.x86_64

mysql-libs-5.1.61-4.el6.x86_64

mysql-devel-5.1.61-4.el6.x86_64


[root@localhost ~]# yum -y remove mysql-5.1.61-4.el6.x86_64 mysql-libs-5.1.61-4.el6.x86_64 mysql-devel-5.1.61-4.el6.x86_64


2、安装,因为mgm只需要用到mysql-cluster-server 这个包里面的两个bin文件,但是请注意,这里我是直接安装整个,虽然有点多此一举,不过算了啦,懒得去拿那两个包,直接rpm好了,自己知道就行了。


[root@localhost ~]# rpm -ivh MySQL-Cluster-server-gpl-7.3.5-1.el6.x86_64.rpm 

Preparing...                ########################################### [100%]

   1:MySQL-Cluster-server-gp########################################### [100%]


3、创建文件夹

[root@localhost ~]# mkdir /var/lib/mysql/data

[root@localhost ~]# mkdir /var/lib/mysql-cluster

[root@localhost ~]# mkdir /var/run/mysqld

[root@localhost ~]# chmod -R 1777 /var/lib/mysql

[root@localhost ~]# chmod -R 1777 /var/lib/mysql-cluster/

[root@localhost ~]# chmod -R 1777 /var/run/mysqld/


有必要解释一下,mysql/data 这个是存放数据库,mysql-cluster这个是管理节点配置路径,run/mysqld这个是mysql运行后台pid路径,当然,这些你都可以根据你自己需要修改。


4、进入/var/lib/mysql-cluster目录,创建config.ini配置文件;

[ndbd default]

NoOfReplicas=2

DataMemory=80M

IndexMemory=18M


[ndb_mgmd]

# IP address of the first management node

NodeId=1

hostname=192.168.0.202

datadir=/var/lib/mysql-cluster


[ndbd]

# IP address of the Storage Server (NDBD) node 1

hostname=192.168.0.203

datadir=/var/lib/mysql/data


[mysqld]

hostname=192.168.0.204


[mysqld]

[mysqld]


5、启动 管理 节点 服务,记得指定配置路径,否则系统会默认创建到

[root@localhost ~]# ndb_mgmd -f /var/lib/mysql-cluster/config.ini --configdir=/var/lib/mysql-cluster/

MySQL Cluster Management Server mysql-5.6.17 ndb-7.3.5

[root@New_server ~]# ndb_mgm

-- NDB Cluster -- Management Client --

ndb_mgm> show

Connected to Management Server at: localhost:1186

Cluster Configuration

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

[ndbd(NDB)]     1 node(s)

id=2 (not connected, accepting connect from 192.168.0.203)


[ndb_mgmd(MGM)] 1 node(s)

id=1    @192.168.0.202  (mysql-5.6.17 ndb-7.3.5)


[mysqld(API)]   3 node(s)

id=3 (not connected, accepting connect from 192.168.0.204)

id=4 (not connected, accepting connect from any host)

id=5 (not connected, accepting connect from any host)

可以看到,起来了,但是,请注意下面三个情况:

情况一:如果,你是双管理节点,那么此时此刻,是不可能起来的,他要等另外一个管理节点的连接,报错如下

[root@localhost ~]# ndb_mgm

-- NDB Cluster -- Management Client --

ndb_mgm> show

Connected to Management Server at: localhost:1186

ERROR Message: The cluster configuration is not yet confirmed by all defined management servers. This management server is still waiting for node 2 to connect.


Could not get configuration

*  4012: Failed to get configuration

*        The cluster configuration is not yet confirmed by all defined management servers. This management server is still waiting for node 2 to connect.

ndb_mgm> 

情况二:如果你是双管理节点,而且两者都把管理节点服务启动了,并且,都正常,然后把其中一个管理节点关掉,另外一个管理节点show一下,没问题。

情况三:如果你是双管理节点,而且两者都把管理节点服务启动了,并且,都正常,然后把整个集群关闭,或者你就模拟意外断电,所有机器都shutdown,开机,你会发现,这时候的管理节点,一个也能show,不需要等待两个管理节点一起up才能show。


总结:

     单管理节点,没有任何问题,直接启动服务,就能show

     双管理节点,有问题,第一次,有且首次启动的时候,需要等待双方协商握手之后,才能完整,打个必须,两个人一起上洗手间,A上完了,不能走,必须等B也上完,才能一起牵手离开;但是,第二次的时候,A上完,就能独自离开了,因为它已经知道它还有另外一个B,心里知道就行了,不用管B的死活了。同样道理,B也是一样;



192.168.0.203 配置如下:

1、清理本机自带任何跟mysql有关的包

[root@localhost ~]# rpm -qa |grep mysql

mysql-5.1.61-4.el6.x86_64

mysql-libs-5.1.61-4.el6.x86_64

mysql-devel-5.1.61-4.el6.x86_64


[root@localhost ~]# yum -y remove mysql-5.1.61-4.el6.x86_64 mysql-libs-5.1.61-4.el6.x86_64 mysql-devel-5.1.61-4.el6.x86_64


2、安装,因为ndb只需要用到mysql-cluster-server 这个包里面的一个bin文件(ndbd),但是请注意,这里我是直接安装整个,有点多此一举。


[root@localhost ~]# rpm -ivh MySQL-Cluster-server-gpl-7.3.5-1.el6.x86_64.rpm 

Preparing...                ########################################### [100%]

   1:MySQL-Cluster-server-gp########################################### [100%]


3、创建文件夹

[root@localhost ~]# mkdir /var/lib/mysql/data

[root@localhost ~]# mkdir /var/lib/mysql-cluster

[root@localhost ~]# mkdir /var/run/mysqld

[root@localhost ~]# chmod -R 1777 /var/lib/mysql

[root@localhost ~]# chmod -R 1777 /var/lib/mysql-cluster/

[root@localhost ~]# chmod -R 1777 /var/run/mysqld/


有必要解释一下,mysql/data 这个是存放数据库,mysql-cluster这个是管理节点配置路径,run/mysqld这个是mysql运行后台pid路径,当然,这些你都可以根据你自己需要修改。


4、创建/etc/my.cnf

[client]

socket=/var/lib/mysql/mysql.sock


[mysqld]

max_connections=100

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock


[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid


[mysql_cluster]

ndb-connectstring=192.168.0.202


5、启动ndb节点

[root@localhost ~]# ndbd --initial

2014-07-15 19:12:35 [ndbd] INFO     -- Angel connected to ‘192.168.0.202:1186‘

2014-07-15 19:12:35 [ndbd] INFO     -- Angel allocated nodeid: 2


6、到管理节点,show 一下看看

ndb_mgm> show

Cluster Configuration

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

[ndbd(NDB)]     1 node(s)

id=2    @192.168.0.203  (mysql-5.6.17 ndb-7.3.5, starting, Nodegroup: 0)


[ndb_mgmd(MGM)] 1 node(s)

id=1    @192.168.0.202  (mysql-5.6.17 ndb-7.3.5)


[mysqld(API)]   3 node(s)

id=3 (not connected, accepting connect from 192.168.0.204)

id=4 (not connected, accepting connect from any host)

id=5 (not connected, accepting connect from any host)

很明显,已经连接上来了。



192.168.0.204 配置如下:

1、清理本机自带任何跟mysql有关的包

[root@localhost ~]# rpm -qa |grep mysql

mysql-5.1.61-4.el6.x86_64

mysql-libs-5.1.61-4.el6.x86_64

mysql-devel-5.1.61-4.el6.x86_64


[root@localhost ~]# yum -y remove mysql-5.1.61-4.el6.x86_64 mysql-libs-5.1.61-4.el6.x86_64 mysql-devel-5.1.61-4.el6.x86_64


2、安装,mysql-cluster-server 和 mysql-cluster-client


[root@localhost ~]# rpm -ivh MySQL-Cluster-server-gpl-7.3.5-1.el6.x86_64.rpm 

Preparing...                ########################################### [100%]

   1:MySQL-Cluster-server-gp########################################### [100%]

[root@localhost ~]# rpm -ivh MySQL-Cluster-client-gpl-7.3.5-1.el6.x86_64.rpm 

Preparing...                ########################################### [100%]

   1:MySQL-Cluster-client-gp########################################### [100%]


3、创建文件夹

[root@localhost ~]# mkdir /var/lib/mysql/data

[root@localhost ~]# mkdir /var/lib/mysql-cluster

[root@localhost ~]# mkdir /var/run/mysqld

[root@localhost ~]# chmod -R 1777 /var/lib/mysql

[root@localhost ~]# chmod -R 1777 /var/lib/mysql-cluster/

[root@localhost ~]# chmod -R 1777 /var/run/mysqld/


有必要解释一下,mysql/data 这个是存放数据库,mysql-cluster这个是管理节点配置路径,run/mysqld这个是mysql运行后台pid路径,当然,这些你都可以根据你自己需要修改。


4、创建/etc/my.cnf

[client]

socket=/var/lib/mysql/mysql.sock


[mysqld]

max_connections=100

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

ndbcluster

ndb-connectstring=192.168.0.202


[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid


5、启动sql服务

[root@localhost ~]# /etc/init.d/mysql start

Starting MySQL....... SUCCESS! 

[root@localhost ~]#


6、到管理节点,show一下,看看mysql—api是不是已经起来

ndb_mgm> show

Cluster Configuration

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

[ndbd(NDB)]     1 node(s)

id=2    @192.168.0.203  (mysql-5.6.17 ndb-7.3.5, Nodegroup: 0, *)


[ndb_mgmd(MGM)] 1 node(s)

id=1    @192.168.0.202  (mysql-5.6.17 ndb-7.3.5)


[mysqld(API)]   3 node(s)

id=3    @192.168.0.204  (mysql-5.6.17 ndb-7.3.5)

id=4 (not connected, accepting connect from any host)

id=5 (not connected, accepting connect from any host)


7、到此,整个集群算是完成。


问题总结:

1、如果要扩大集群,例如增加一台ndb节点,那要怎么搞

   管理节点,删除/var/lib/mysql-cluster/ 下面ndb开头的所有文件

   管理节点,修改/var/lib/mysql-cluster/config.ini,增加ndb集群id和hostname

   存储节点,修改my.cnf,增加[mysql_cluster]  ndb-connectstring=192.168.0.202


2、如果,有一天,突然,想把203这台ndb节点,附加上api节点,那么就会有一个蛋疼的事情出现,理论上,mysql-cluster各个节点,都是独立的,管它是同一台还是不同台,都是正常的;但是,如果你加上去的话,你就要注意一个事情

   同一台机器的 ndb 节点和 sql节点,必须ndb节点先启动,才能启动sql节点,否则sql节点,是永远都连不上集群,千万切忌,我就是纠结这个问题,老是不启动ndb节点,在疑问自己,为什么sql节点启动了,管理节点看不到sql节点状态。


3、关闭集群的命令

   先关闭  查询节点  mysqladmin -uroot -p shutdown  密码在 /root/.mysql_secret

   再关闭 集群节点   ndb_mgm -e shutdown


本文出自 “周氏一族” 博客,谢绝转载!