mysql cluste 5.6.29 ndb-7.4.11搭建实战

基于CentOS 7安装MySQL-Cluster

mysql-5.6.29 ndb-7.4.11

环境

系统:centos7.3

Mysql版本:mysql-5.6.29 ndb-7.4.11

集群各节点的配置规划

1  集群节点规划表

 

节点类型

IP地址

主机名

管理节点

10.200.48.231

mgmhostname

数据节点

10.200.48.232

data1hostname

数据节点

10.200.48.233

data2hostname

SQL节点

10.200.48.234

sql1hostname

SQL节点

10.200.48.235

Sql2hostname

 

1.建虚拟机

mysql cluste 5.6.29 ndb-7.4.11搭建实战

mysql cluste 5.6.29 ndb-7.4.11搭建实战

mysql cluste 5.6.29 ndb-7.4.11搭建实战

mysql cluste 5.6.29 ndb-7.4.11搭建实战

mysql cluste 5.6.29 ndb-7.4.11搭建实战

mysql cluste 5.6.29 ndb-7.4.11搭建实战

mysql cluste 5.6.29 ndb-7.4.11搭建实战

mysql cluste 5.6.29 ndb-7.4.11搭建实战

点击“启动虚拟机”,开始安装系统。

2.安装操作系统

1进入安装初始化界面

mysql cluste 5.6.29 ndb-7.4.11搭建实战

mysql cluste 5.6.29 ndb-7.4.11搭建实战

2)自动进入到图形化安装界面

选择语言:

mysql cluste 5.6.29 ndb-7.4.11搭建实战

配置分区:

mysql cluste 5.6.29 ndb-7.4.11搭建实战

mysql cluste 5.6.29 ndb-7.4.11搭建实战

mysql cluste 5.6.29 ndb-7.4.11搭建实战

mysql cluste 5.6.29 ndb-7.4.11搭建实战

mysql cluste 5.6.29 ndb-7.4.11搭建实战

mysql cluste 5.6.29 ndb-7.4.11搭建实战

配置主机名和ip:

mysql cluste 5.6.29 ndb-7.4.11搭建实战

 

 

 

mysql cluste 5.6.29 ndb-7.4.11搭建实战

mysql cluste 5.6.29 ndb-7.4.11搭建实战

mysql cluste 5.6.29 ndb-7.4.11搭建实战

 

mysql cluste 5.6.29 ndb-7.4.11搭建实战

 

设置root用户的密码:

mysql cluste 5.6.29 ndb-7.4.11搭建实战

mysql cluste 5.6.29 ndb-7.4.11搭建实战

 

 

 

 

mysql cluste 5.6.29 ndb-7.4.11搭建实战

 

 

mysql cluste 5.6.29 ndb-7.4.11搭建实战

 

3.主机名、IP、防火墙的设置

1设置ip

Nameserver 118.118.118.9

进入网络配置文件目录:  cd /etc/sysconfig/network-scripts

mysql cluste 5.6.29 ndb-7.4.11搭建实战

  vi /etc/sysconfig/network-scripts/ifcfg-eno16777736 #编辑配置文件,添加修改以下内容:

mysql cluste 5.6.29 ndb-7.4.11搭建实战

vi /etc/hosts

修改为以下内容:

127.0.0.1localhost mgmhostname localhost4 localhost4.localdomain4

::1localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.0.81 mgmhostname

192.168.0.82 data1hostname

192.168.0.83 data2hostname

192.168.0.84 sql1hostname

192.168.0.85 sql2hostname

mysql cluste 5.6.29 ndb-7.4.11搭建实战

2主机名的设置

执行命令:hostname mgmhostname

mysql cluste 5.6.29 ndb-7.4.11搭建实战

vi /etc/hostname 

mysql cluste 5.6.29 ndb-7.4.11搭建实战

Ip及主机名设置完成,检查一下:

cat /etc/hosts

cat /etc/hostname

hostname

mysql cluste 5.6.29 ndb-7.4.11搭建实战

重启网络:service network restart  

查看ip 地址:ip addr

mysql cluste 5.6.29 ndb-7.4.11搭建实战

3防火墙的设置

禁用防火墙:systemctl disable firewalld.service

(或者停止防火墙:systemctl stop firewalld.service

mysql cluste 5.6.29 ndb-7.4.11搭建实战

4)重启操作系统:shutdown –r now

4.配置本地yum源并安装需要的包

将操作系统安装盘上传到操作系统中 /usr/local目录下。(可以使用上传软件来传,我使用的xmanage中的xftp来上传的)

新建/media/cdrom目录(用于挂载光盘):mkdir /media/cdrom

mysql cluste 5.6.29 ndb-7.4.11搭建实战

将光盘挂载到/media/cdrom目录下:

cd/usr/local

mount CentOS-7-x86_64-DVD-1511.iso /media/cdrom

df -h

mysql cluste 5.6.29 ndb-7.4.11搭建实战

配置本地yum源:

cd/etc/yum.repos.d/

mysql cluste 5.6.29 ndb-7.4.11搭建实战

CentOS-Base.repo原文件复制为CentOS-Base.repo.bak,以防改错。

cp CentOS-Base.repo CentOS-Base.repo.bak

mysql cluste 5.6.29 ndb-7.4.11搭建实战

vi CentOS-Base.repo

mysql cluste 5.6.29 ndb-7.4.11搭建实战

将全文替换为以下内容:

[yumtest]

name=centos7yumtest

baseurl=file:///media/cdrom

gpgcheck=0

enabled=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

mysql cluste 5.6.29 ndb-7.4.11搭建实战

执行:yum clean all

mysql cluste 5.6.29 ndb-7.4.11搭建实战

执行:yum makecache

mysql cluste 5.6.29 ndb-7.4.11搭建实战

安装perl包(为了后续安装系统数据库做准备):

cd /media/cdrom

cd Packages/

yum -y install perl*

mysql cluste 5.6.29 ndb-7.4.11搭建实战

 

 

5.安装mysql集群

mysql-cluster集群安装包上传到操作系统的/data/目录下。

[[email protected] /]# mkdir /data

[[email protected] /]# cd /data/

[[email protected] ~]# cd /data/

解压集群安装包:

[[email protected] data]# tar -xzvf mysql-cluster-gpl-7.4.11-linux-glibc2.5-x86_64.tar.gz

mysql cluste 5.6.29 ndb-7.4.11搭建实战

给解压后的目录重命名为mysql

[[email protected] data]# mv mysql-cluster-gpl-7.4.11-linux-glibc2.5-x86_64 /data/mysql

mysql cluste 5.6.29 ndb-7.4.11搭建实战

1)新建mysql组和用户

groupadd mysql

useradd -g mysql mysql

mysql cluste 5.6.29 ndb-7.4.11搭建实战

2)由mgm克隆一个名为data1的虚拟机

关闭虚拟机:shutdown –h now

选择虚拟机,右键“快照”->“拍摄快照”:

选择虚拟机,右键“管理”->“克隆”:

mysql cluste 5.6.29 ndb-7.4.11搭建实战

 

mysql cluste 5.6.29 ndb-7.4.11搭建实战

 

mysql cluste 5.6.29 ndb-7.4.11搭建实战

mysql cluste 5.6.29 ndb-7.4.11搭建实战

 

mysql cluste 5.6.29 ndb-7.4.11搭建实战

 

mysql cluste 5.6.29 ndb-7.4.11搭建实战

3)配置管理节点

         启动mgm虚拟机。

1 创建目录  

mkdir /data/mysql-cluster

2 配置config.ini配置文件

注意:不要直接复制我的。若直接从windows复制到linux中,很有可能会出现莫名的报错。

cd /data/mysql-cluster

vi config.ini

添加以下内容:

[ndbd default]

NoOfReplicas=2

DataMemory=1000M

IndexMemory=18M

 

[ndb_mgmd]

NodeId=1

hostname=10.200.48.231

datadir=/data/mysql-cluster

 

[ndbd]

NodeId=2

hostname=10.200.48.232

datadir=/data/mysql/data

 

[ndbd]

NodeId=3

hostname=10.200.48.233

datadir=/data/mysql/data

 

[mysqld]

NodeId=4

hostname=10.200.48.234

 

[mysqld]

NodeId=5

hostname=10.200.48.235

 

 

 

 

 

 

配置结果为:

mysql cluste 5.6.29 ndb-7.4.11搭建实战

4)安装管理节点

移除my.cnf配置文件:

[[email protected] ~]# mv /etc/my.cnf my.cnf.bak

ndb_mgm*移动到/data/bin目录下:

[[email protected] ~]# cp /data/mysql/bin/ndb_mgm* /usr/local/bin

添加可执行权限:

[[email protected] bin]# chmod +x ndb_mgm*

5)配置data1节点

修改data1的主机ip及主机名。其配置与第3节类似。data1ip配置为192.168.0.82hostname配置为data1hostname

1)修改配置文件/etc/my.cnf

[[email protected] local]# vi /etc/my.cnf

修改为以下内容:

[mysqld]

basedir=/data/mysql

datadir=/data/mysql/data

socket=/data/mysql/sock/mysql.sock

user=mysql

symbolic-links=0

 

[mysqld_safe]

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

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

 

[mysql_cluster]

ndb-connectstring=10.200.48.231

 

附加说明:mysql.sockmysql的主机和客户机在同一host上的时候,使用unix domain socket做为通讯协议的载体,它比tcp快。Linux下安装mysql连接的时候常提示说找不到mysql.sock文件,解决办法:

如果是新安装的mysql,提示找不到文件,就搜索下,制定正确的位置。如果mysql.sock文件误删的话,就需要重启mysql服务,如果重启成功的话会在datadir目录下生产mysql.sock,到时候指定即可。如果还不行就选择用tcp连接方式就行了,其实windows下还支持管道连接方式。

 

配置结果如下:

mysql cluste 5.6.29 ndb-7.4.11搭建实战

2)创建系统数据库

[[email protected] ~]# cd /data/mysql

[[email protected] mysql]# mkdir sock

[[email protected] mysql]# /data/mysql/scripts/mysql_install_db --user=mysql --basedir=/data/mysql --datadir=/data/mysql/data

mysql cluste 5.6.29 ndb-7.4.11搭建实战

3)设置相关目录权限

[[email protected] mysql]# chown -R root .

[[email protected] mysql]# chown -R mysql:mysql /data/mysql/data

[[email protected] mysql]# chown -R mysql:mysql /data/mysql/sock

[[email protected] mysql]# chgrp -R mysql .

mysql cluste 5.6.29 ndb-7.4.11搭建实战

mysql cluste 5.6.29 ndb-7.4.11搭建实战

mysql cluste 5.6.29 ndb-7.4.11搭建实战

4 配置MySQL服务

[[email protected] mysql]# cp support-files/mysql.server /etc/rc.d/init.d/

[[email protected] mysql]# chmod +x /etc/rc.d/init.d/mysql.server

[[email protected] mysql]# chkconfig --add mysql.server

mysql cluste 5.6.29 ndb-7.4.11搭建实战

6)由data1节点克隆data2sql1节点

先关闭data1节点:[[email protected] mysql]# shutdown -h now

克隆步骤见第5节的(3)小点。

7)配置data2节点

启动data2节点:

1)修改Ip

2)修改主机名

3service network restart

4shutdown –r now

8)配置sql1节点

启动sql1节点:

1)修改IP

2)修改主机名

3service network restart

4shutdown –r now

5)配置my.cnf配置文件

vi /etc/my.cnf

[[email protected] ~]# vi /etc/my.cnf

修改为以下内容:

[client]

socket=/data/mysql/sock/mysql.sock

 

[mysqld]

ndbcluster

basedir=/data/mysql

datadir=/data/mysql/data

socket=/data/mysql/sock/mysql.sock

ndb-connectstring=10.200.48.231

 

[mysqld_safe]

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

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

 

[mysql_cluster]

ndb-connectstring=10.200.48.231

配置结果如下:

mysql cluste 5.6.29 ndb-7.4.11搭建实战

9)由sql1节点克隆出sql2节点

启动sql2节点:

1)修改ip

2)修改主机名

3service network restart

4shutdown –r now

 

 

6.Cluster集群启动

注意启动顺序:首先是管理节点,然后是数据节点,最后是sql节点。

1)启动管理节点:

[[email protected] mysql-cluster]# ndb_mgmd -f /data/mysql-cluster/config.ini

mysql cluste 5.6.29 ndb-7.4.11搭建实战

还可以使用ndb_mgm来监听客户端,如下:

[[email protected] mysql-cluster]# ndb_mgm

mysql cluste 5.6.29 ndb-7.4.11搭建实战

2)启动两个数据节点

首次启动,则需要添加—inittial参数,以便进行NDB节点的初始化工作。在以后的启动过程中,则是不能添加该参数的,否则ndbd程序会清除在之前建立的所有用于恢复的数据文件和日志文件。

在数据节点data1:

[[email protected] ~]# /data/mysql/bin/ndbd --initial

mysql cluste 5.6.29 ndb-7.4.11搭建实战

在数据节点data2:

[[email protected] ~]# /data/mysql/bin/ndbd --initial

mysql cluste 5.6.29 ndb-7.4.11搭建实战

3)启动两个SQL节点

mysql服务没有运行,则在shell中运行以下命令:

/data/mysql/bin/mysqld_safe  --user=mysql &

可以通过ps –ef | grep mysql命令来判断mysql服务是否启动。

[[email protected] ~]# ps -ef | grep mysql

在我的环境下,mysql服务已经启动,如下图所示:

sql1节点的mysql服务启动情况如下:

mysql cluste 5.6.29 ndb-7.4.11搭建实战

sql2节点的mysql服务启动情况如下:

mysql cluste 5.6.29 ndb-7.4.11搭建实战

4查看启动结果

查看管理节点:

如下图所示,一个管理节点,两个数据节点,2sql节点全部启动成功。

mysql cluste 5.6.29 ndb-7.4.11搭建实战

 

 

7. MySQL集群测试

现在我们在其中一个SQL节点(sql1节点)上进行相关数据库的创建,然后到另外一个SQL节点上查看数据是否同步。

sql1节点192.168.0.84)上执行:

[[email protected] ~]# /data/mysql/bin/mysql

mysql> show databases;

mysql> create database aa;

mysql> use aa

注意:下面的创建表的语句中,一定要制定数据库表的引擎为NDB,否则同步失败。

mysql> create table ctest2(i int) engine=ndb;

mysql> insert into ctest2 values(1);

mysql> select * from ctest2;

mysql cluste 5.6.29 ndb-7.4.11搭建实战

sql2节点上查看数据是否同步

[[email protected] ~]#  /data/mysql/bin/mysql

mysql> show databases;

mysql> use aa;

mysql> select * from ctest2;

mysql cluste 5.6.29 ndb-7.4.11搭建实战

如上图所示,数据同步过来了。

附加:查看通过以下语句查看表的引擎是否为NDB:

mysql> show create table 表名;

如:

mysql> show create table ctest2;

mysql cluste 5.6.29 ndb-7.4.11搭建实战

 

 

8. 关闭MySQL集群

1)关闭管理节点和数据节点,只需要在管理节点(mgm)里执行:

[[email protected] mysql-cluster]# /data/mysql/bin/ndb_mgm -e shutdown

mysql cluste 5.6.29 ndb-7.4.11搭建实战

5分别在SQL节点执行: /etc/init.d/mysql.server stop

SQL节点1

mysql cluste 5.6.29 ndb-7.4.11搭建实战

SQL节点2

mysql cluste 5.6.29 ndb-7.4.11搭建实战

 

 

 

9.更改用户权限

mysql> update user set Password=PASSWORD("rootpwd") where Host="%";

mysql> flush privileges;

mysql cluste 5.6.29 ndb-7.4.11搭建实战

 

10.环境变量设置(sql节点)

vim /etc/profile

export MYSQL_HOME=/data/mysql

export PATH=${MYSQL_HOME}/bin:$PATH

# 保存后,使环境变量生效

source /etc/profile