【小镇的技术天梯】lanmp服务器集群搭建(4)mysql-cluster集群搭建

lanmp集群搭建的重点来了,这次是搭建mysql集群,mysql集群可以说是重中之重,因为最需要用集群的地方是mysql,现在的web应用的瓶颈基本上都在mysql的负载上面。
【小镇还是要提醒下大家,其实提升mysql性能的最好方法是写性能高的mysql语句和加装ssd固态硬盘】。下面大家来看下mysql集群的结构图,如下图所示:
【小镇的技术天梯】lanmp服务器集群搭建(4)mysql-cluster集群搭建
文章图片


从结构图可以看出,mysql集群分为三个部分。对外提供服务的是SQL节点,也就是图中的SQL server,存储数据的是ndbd数据节点,是图中的NDB-cluster,最后一台服务器为Management Server,是管理mysql-cluster的。
搭建mysql集群最少需要3台服务器,小镇这边用5台服务器,因为这样更能分割开功能。
首先,小镇在虚拟机创建192.168.1.130-134总共5台服务器,系统为centos7.2,如下图所示:
【小镇的技术天梯】lanmp服务器集群搭建(4)mysql-cluster集群搭建
文章图片


首先在所有的服务器中都安装上mysql-cluster,这边小镇装的是mysql-cluster-gpl-7.4.6-linux-glibc2.564位的。这是个已经编译好的安装包,只要解压到/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


3. 创建系统数据库
在shell中运行以下命令:
cd /usr/local/mysql
mkdir sock
scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data


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


3. 创建系统数据库
在shell中运行以下命令:
cd /usr/local/mysql
mkdir sock
scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data



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集群。
【【小镇的技术天梯】lanmp服务器集群搭建(4)mysql-cluster集群搭建】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流量。

    推荐阅读