mysql集群
集群/群集:用一组服务器提供相同的服务
LB集群:负载均衡集群(多台服务器共同工作)
HA集群:高可靠集群(一个做备用)
一、mysql集群架构中的主机的角色:
类型
服务进程
主要用途
管理节点
ndb_mgmd
提供集群配置,启动或停止节点,
执行备份、群集监控等任务
管理节点必须第一个启动
数据节点
ndbd(单线程)
ndb_mtd(多线程)
存储实际的表记录,可以有多个副本
推荐至少2个数据节点
SQL节点
mysqld
可理解为支持NDB的标准MySQL服务器,
仅存储表结构、独立的用户授权
面向客户端提供用户鉴权、SQL查询等
访问服务
二、安装
不需要安装mysql-server软件了,所以可以关掉mysql服务
在集群中的所有主机上安装mysql-cluster集群软件
mysql-cluster软件提供3种进程:
1,mysqld进程:供用户访问和执行sql语句
2,数据进程ndbd:存储数据
3,管理进程mgmd:管理集群中的所有的主机
三、具体思路:
1,配置管理节点:server1
ip地址:192.168.1.1
mkdir/var/log/my-cluster
vim/etc/my-cluster.ini(该文件不存在,需要创建)
[ndbd default] //设置数据节点的默认参数
NoOfReplicas=2 //保留2份数据拷贝
DataMemory=80M //数据缓存大小
IndexMemory=18M //索引缓存大小
[ndb_mgmd] //设置管理节点
nodeid=1 //管理节点的标识
hostname=192.168.1.1 //管理节点的IP地址
datadir=/var/log/my-cluster //工作目录
[mysqld] //设置SQL节点server1
nodeid=2 //ID标识
hostname=192.168.1.20 //此节点的IP地址
[mysqld] //设置SQL节点server2
nodeid=3
hostname=192.168.1.30
[ndbd] //设置数据节点server4
nodeid=4 //ID标识
hostname=192.168.1.40 //此节点的IP地址
datadir=/var/log/mysql-cluster //工作目录
[ndbd] //设置数据节点server5
nodeid=5
hostname=192.168.1.50
datadir=/var/log/mysql-cluster
2,配置sql节点(server2,server3)
编辑sql节点的配置文件/etc/my.cnf(本身不存在,需要创建)
vim /etc/my.cnf
[mysqld]
ndbcluster //使用ndb集群引擎
default-storage-engine=ndbcluster //设置默认引擎
[mysql_cluster]
ndb-connectstring=192.168.1.1 //指定管理节点ip地址
server3上配置和server2相同
3,配置数据节点(server4,server5)
首先创建server1上配置文件指定的文件夹:
mkdir/var/log/mysql-cluster
然后给数据节点编辑配置文件(/etc/my.cnf 本身不存在,需要创建)
vim /etc/my.cnf
[mysqld]
datadir=/var/log/mysql-cluster //工作目录,在管理节点上配置文件指定的那个目录
ndb-connectstring=192.168.1.1 //管理本台主机的ip地址
ndbcluster //使用ndb集群存储引擎为ndbcluster
[mysql_cluster] //指定管理集群的主机
ndb-connectstring=192.168.1.1 //指定管理集群的ip地址
注:server4和server5上的配置一样
4,初始化授权库
5,启动所有server的服务
第一个:先启动管理主机上的管理进程
在server1上:
ndb_mgmd -f /etc/my-cluster.ini //启动管理进程的时候加载配置文件my-cluster.ini
ndb_mgm //登录
show //查看急群众所有主机的状态
关闭该进程使用:pkill-9 ndbd_mgmd
第二个:启动数据节点主机上的ndbd进程(server4、server5)
在server4和server5上:
ndbd //开启ndbd进程
如果想要关闭,使用kill杀死进程号或pkill杀死ndbd进程
第三个:启动sql节点(server2,server3)
启动mysql服务
service mysql start
MySQL集群配置示例:
环境:
server1:192.168.1.1
server2:192.168.1.20
server3:192.168.1.30
server4:192.168.1.40
server5:192.168.1.50
第一步:server1配置:
[root@server1 ~]# mkdir /var/log/my-cluster
[root@server1 ~]# cat /etc/my-cluster.ini
[ndbd default]
NoOfReplicas=2
DataMemory=80M
IndexMemory=18M
[ndb_mgmd]
nodeid=1
hostname=192.168.1.1
datadir=/var/log/my-cluster
[mysqld]
nodeid=2
hostname=192.168.1.20
[mysqld]
nodeid=3
hostname=192.168.1.30
[ndbd]
nodeid=4
hostname=192.168.1.40
datadir=/var/log/mysql-cluster
[ndbd]
nodeid=5
hostname=192.168.1.50
datadir=/var/log/mysql-cluster
[root@server1 ~]#
注:ip地址为192.168.1.1
第二步:server2和server3的配置:
[root@server2 ~]#ifconfig | grep addr
eth1 Link encap:Ethernet HWaddr 00:0C:29:22:B2:31
inet addr:192.168.1.20 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe22:b231/64 Scope:Link
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
[root@server2 ~]#vim /etc/my.cnf
[root@server2 ~]# cat /etc/my.cnf
[mysqld]
ndbcluster
default-storage-engine=ndbcluster
[mysql_cluster]
ndb-connectstring=192.168.1.1
[root@server2 ~]#
注:server3和server2配置相同,ip地址为192.168.1.30
第三步:server4和server5上的配置:
[root@server4 ~]# ifconfig | head -2
eth1 Link encap:Ethernet HWaddr 00:0C:29:B6:6A:99
inet addr:192.168.1.40 Bcast:192.168.1.255 Mask:255.255.255.0
[root@server4 ~]#vim /etc/my.cnf
[root@server4 ~]# cat /etc/my.cnf
[mysqld]
datadir=/var/log/mysql-cluster
ndb-connectstring=192.168.1.1
ndbcluster
[mysql_cluster]
ndb-connectstring=192.168.1.1
[root@server4 ~]#
第四步:
首先启动管理主机server1
[root@server1 Desktop]# ndb_mgmd -f /etc/my-cluster.ini
MySQL Cluster Management Server mysql-5.6.14 ndb-7.3.3
[root@server1 Desktop]# ndb_mgm
-- NDB Cluster -- Management Client --
ndb_mgm> show
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=4 (not connected, accepting connect from 192.168.1.40)
id=5 (not connected, accepting connect from 192.168.1.50)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.1.1 (mysql-5.6.14 ndb-7.3.3)
[mysqld(API)] 2 node(s)
id=2 (not connected, accepting connect from 192.168.1.20)
id=3 (not connected, accepting connect from 192.168.1.30)
ndb_mgm>
然后再server4和server5上启动ndbd进程
server4:
[root@server4 Desktop]# ndbd
2014-03-21 18:35:42 [ndbd] INFO -- Angel connected to '192.168.1.1:1186'
2014-03-21 18:35:42 [ndbd] INFO -- Angel allocated nodeid: 4
[root@server4 Desktop]#
server5:
[root@server5 Desktop]# ndbd
2014-03-21 19:57:10 [ndbd] INFO -- Angel connected to '192.168.1.1:1186'
2014-03-21 19:57:10 [ndbd] INFO -- Angel allocated nodeid: 5
[root@server5 Desktop]#
最后在server2和server3上开启mysql服务:
[root@server2 ~]# service mysql restart
Shutting down MySQL.... [ OK ]
Starting MySQL..... [ OK ]
[root@server2 ~]#
[root@server3 Desktop]# service mysql restart
Shutting down MySQL..... [ OK ]
Starting MySQL.... [ OK ]
[root@server3 Desktop]#
验证:在server1上通过show命令查看是否连接成功
ndb_mgm> show
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=4 @192.168.1.40 (mysql-5.6.14 ndb-7.3.3, Nodegroup: 0, *)
id=5 @192.168.1.50 (mysql-5.6.14 ndb-7.3.3, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.1.1 (mysql-5.6.14 ndb-7.3.3)
[mysqld(API)] 2 node(s)
id=2 @192.168.1.20 (mysql-5.6.14 ndb-7.3.3)
id=3 @192.168.1.30 (mysql-5.6.14 ndb-7.3.3)
ndb_mgm>
本文转自 murongqingqqq 51CTO博客,原文链接:http://blog.51cto.com/murongqingqqq/1381923