lanmp集群搭建的重点来了,这次是搭建mysql集群,mysql集群可以说是重中之重,因为最需要用集群的地方是mysql,现在的web应用的瓶颈基本上都在mysql的负载上面。
【小镇还是要提醒下大家,其实提升mysql性能的最好方法是写性能高的mysql语句和加装ssd固态硬盘】。下面大家来看下mysql集群的结构图,如下图所示:
从结构图可以看出,mysql集群分为三个部分。对外提供服务的是SQL节点,也就是图中的SQL server,存储数据的是ndbd数据节点,是图中的NDB-cluster,最后一台服务器为Management Server,是管理mysql-cluster的。
搭建mysql集群最少需要3台服务器,小镇这边用5台服务器,因为这样更能分割开功能。
首先,小镇在虚拟机创建192.168.1.130-134总共5台服务器,系统为centos7.2,如下图所示:
首先在所有的服务器中都安装上mysql-cluster,这边小镇装的是mysql-cluster-gpl-7.4.6-linux-glibc2.5 64位的。这是个已经编译好的安装包,只要解压到/usr/local/mysql目录中就行了。
第一步,配置管理节点,配置mysql-cluster的配置文件。创建/var/lib/mysql-cluster目录,在其中创建文件config.ini,文件内容如下:
[ndbd default]
NoOfReplicas=2
DataMemory=80M
IndexMemory=18M
[ndb_mgmd]
NodeId=1
hostname=192.168.1.130
datadir=/var/lib/mysql-cluster
[ndbd]
NodeId=2
hostname=192.168.1.131
datadir=/usr/local/mysql/data
[ndbd]
NodeId=3
hostname=192.168.1.132
datadir=/usr/local/mysql/data
[mysqld]
NodeId=4
hostname=192.168.1.133
[mysqld]
NodeId=5
hostname=192.168.1.134
最上面的大小大家根据自己服务器的内存大小自行调节。
第二步,配置数据节点
1. 添加mysql组和用户
在shell中运行以下命令:
groupadd mysql
useradd -g mysql mysql
2. 配置my.cnf配置文件
在shell中运行以下命令:
gedit /etc/my.cnf
内容如下:
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/sock/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[mysql_cluster]
ndb-connectstring=192.168.1.130
4. 设置数据目录
在shell中运行以下命令:
chown -R root .
chown -R mysql.mysql /usr/local/mysql/data
chown -R mysql.mysql /usr/local/mysql/sock
chgrp -R mysql .
5. 配置MySQL服务
在shell中运行以下命令:
cp support-files/mysql.server /etc/rc.d/init.d/
chmod +x /etc/rc.d/init.d/mysql.server
chkconfig --add mysql.server
第三步:配置sql节点
1. 添加mysql组和用户
在shell中运行以下命令:
groupadd mysql
useradd -g mysql mysql
2. 配置my.cnf配置文件
在shell中运行以下命令:
gedit /etc/my.cnf
内容如下:
[client]
socket=/usr/local/mysql/sock/mysql.sock
[mysqld]
ndbcluster
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/sock/mysql.sock
ndb-connectstring=192.168.1.130
[mysql_cluster]
ndb-connectstring=192.168.1.130
4. 设置数据目录
在shell中运行以下命令:
chown -R root .
chown -R mysql.mysql /usr/local/mysql/data
chown -R mysql.mysql /usr/local/mysql/sock
chgrp -R mysql .
5. 配置MySQL服务
在shell中运行以下命令:
cp support-files/mysql.server /etc/rc.d/init.d/
chmod +x /etc/rc.d/init.d/mysql.server
chkconfig --add mysql.server
第四步:启动mysql集群。
1. 启动管理结点
在shell中运行以下命令:
ndb_mgmd -f /var/lib/mysql-cluster/config.ini
还可以使用ndb_mgm来监听客户端,如下:
ndb_mgm
2. 启动数据结点
首次启动,则需要添加--initial参数,以便进行NDB节点的初始化工作。在以后的启动过程中,则是不能添加该参数的,否则ndbd程序会清除在之前建立的所有用于恢复的数据文件和日志文件。
/usr/local/mysql/bin/ndbd --initial
如果不是首次启动,则执行下面的命令。
/usr/local/mysql/bin/ndbd
3. 启动SQL结点
若MySQL服务没有运行,则在shell中运行以下命令:
/usr/local/mysql/bin/mysqld_safe --user=mysql &
现在mysql-cluster就搭建完成了,只有133和134结点是对外服务的。这时候在133中建立一张表test,发现134中的表也相应的同步了,后面的web应用就可以使用133和134节点来进行相应的mysql交互了,小镇会在下篇文章介绍使用haproxy负载均衡133节点和134节点的mysql流量。