Mysql-Cluster-7.5集群搭建

技术文档——Mysql-Cluster-7.5集群搭建

前言

随着时代的发展,新技术的层出不穷。Mysql数据库在业务量不大的时候,我们会使用主从复制的方法实现服务器数据同步,一主多从或者是双主等,但是虽然进行了读写分离,但是对于读的方法限制还是比较大,所以解决数据同步的问题就是数据库集群的意义。这里使用mysql官网提供的mysql-cluster实现集群,主要供技术学习及研究使用。

mysql cluster简介

1、mysql-cluster已经包含了mysql,这里使用的mysql-cluster7.5,官方说明包含的是mysql版本是5.7。所以不需要使用别的msyql的安装包安装数据库。同时注意mysql5.7的版本在安装的命令和配置上面和之前的版本有很大的不同,所以网上有很多mysql-cluster7.5之前的版本,所包含的mysql版本不同,所以安装方法不同。

2、管理节点,mysql-cluster管理节点负责管理、配置、监控整个集群。

3、数据节点,使用内存存放数据,保存进数据节点的数据都会自动复制并存储到其他数据节点。

4、mysql节点,也叫数据库节点,和我们平时使用的mysql相同,作为数据库使用。被数据节点访问。

mysql cluster架构图及说明

环境中的配置如图所示,因为虚拟机占用内存较大,只使用了3台服务器,在实际情况中最好将数据节点和mysql节点分开。在实际中负载均衡服务还需要做备份,因为万一负载均衡服务器宕机将会导致所有数据节点都无法访问,所以需要对负载均衡服务器备份,有条件的话,分开管理节点和负载均衡器。

192.168.74.21    管理节点

192.168.74.22    数据节点、sql节点

192.168.74.23    数据节点、sql节点

mysql cluster安装介质

CentOS操作系统版本:CentOS-7-x86_64-DVD-1511.iso

mysql cluster版本:mysql-cluster-gpl-7.5.4-linux-glibc2.5-x86_64.tar.gz 

mysql cluster安装准备工作

安装之前,如果之前安装过mysql,那么需要删除相应的各种mysql文件,删除之前请停止mysql服务。并且不要忘记删除my.cnf这些配置文件。确保删除干净。不然可能会和后面的安装有冲突。如果是实验,关闭防火墙,实际中,防火墙打开对应端口(注意实际中需要使用的端口不只有3306端口,还有同步需要使用的1186端口)。保证服务器之前能互相访问,能ping通。保证固定的ip地址。保证没有别的程序占用需要使用的端口。如3306等。这些都确认完毕后再进行安装。

关闭防火墙、设置主机名

systemctl stopfirewalld.service

systemctl disable firewalld.service

vi /etc/hosts

192.168.74.21 hdp21

192.168.74.22 hdp22

192.168.74.23 hdp23

安装配置管理节点

将下载后的包上传至服务器/usr/local下

cd /usr/local

tar xvfmysql-cluster-gpl-7.5.4-linux-glibc2.5-x86_64.tar.gz

将需要的文件取出

cd mysql-cluster-gpl-7.5.4-linux-glibc2.5-x86_64

cp bin/ndb_mgm*/usr/local/bin

cd /usr/local/bin

chmod +x ndb_mgm*

新建配置文件并且初始化管理节点

mkdir/var/lib/mysql-cluster

mkdir /usr/local/mysql

vi/var/lib/mysql-cluster/config.ini

下面是配置文件,根据自己的需求修改。

[ndbd default]

NoOfReplicas=2

DataMemory=512M

IndexMemory=18M


[ndb_mgmd]

HostName=192.168.74.21

DataDir=/var/lib/mysql-cluster


[ndbd]

HostName=192.168.74.22

DataDir=/var/lib/mysql-cluster


[ndbd]

HostName=192.168.74.23

DataDir=/var/lib/mysql-cluster


[mysqld]

HostName=192.168.74.22

[mysqld]

HostName=192.168.74.23

使用配置文件初始化管理节点

/usr/local/bin/ndb_mgmd-f /var/lib/mysql-cluster/config.ini --initial

出现MySQL Cluster Management Server mysql-5.7.16 ndb-7.5.4

然后就能使用ndbd进去管理了

cd /usr/local/bin

ndb_mgm

ndb_mgm>show

ndb_mgm>show(使用show命令查看管理情况,当数据节点配置完毕之后,我们再用这个命令查看和管理)

到此为止管理节点配置完毕,接下去配置数据和sql节点

安装配置数据和mysql节点

以下的所有操作需要在所有的集群节点(管理节点除外)都要进行相同的操作

新增用户组mysql和用户msyql

groupadd mysql

useradd -g mysql -s/bin/false mysql

新建文件夹并赋予权限

mkdir /var/lib/mysql-cluster

chown root:mysql/var/lib/mysql-cluster

将下载后的包上传至服务器/usr/local下

解压

cd /usr/local

tar xvfmysql-cluster-gpl-7.5.4-linux-glibc2.5-x86_64.tar.gz

创建链接方便访问

ln -s /usr/local/mysql-cluster-gpl-7.5.4-linux-glibc2.5-x86_64/usr/local/mysql

初始化数据库(这里要注意,如果安装的版本不同,数据库初始化的命令可能不同的,很多之前的版本会使用:scripts/mysql_install_db --user=mysql来初始化,这个已经被mysql在新的版本中废弃了,所以需要使用下面的命令安装,如果需要安装别的版本请参考mysql官网的对应版本的安装命令。)

进入刚才创建的目录的bin目录下初始化,正常安装mysql如何初始化就如何进行安装就可以了,这里还可以设置安装数据库的data目录等参数。

cd /usr/local/mysql/bin

./mysqld --initialize--user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

如果初始化成功之后,系统会提示一个随机生成的数据库密码,此时需要记住这个密码,之后登录数据库需要使用这个密码。

192.168.74.22     p.(V9O+2*etk                      #记录192.168.74.22的初始化密码

192.168.74.23     vKeCI;+4Igl?                       #记录192.168.74.23的初始化密码

修改权限

chown -R root .

chown -R mysql data

chgrp -R mysql .

cp support-files/mysql.server/etc/rc.d/init.d/

chmod +x/etc/rc.d/init.d/mysql.server

chkconfig --addmysql.server

配置数据节点

vi /etc/my.cnf


[client]

port = 3306

socket =/tmp/mysql.sock


[mysqld]

basedir=/usr/local/mysql/

datadir=/usr/local/mysql/data

user=root

port=3306

socket=/tmp/mysql.sock

server-id = 1

ndbcluster

ndb-connectstring=192.168.74.21


[mysql_cluster]

ndb-connectstring=192.168.74.21

其中的IP为管理节点的IP

启动集群节点上面的服务启动mysql(成功会有success)

/etc/init.d/mysql.serverstart

启动mysql成功之后请自己登录进mysql内然后进行密码修改等操作,就和正常安装完成mysql的操作一样。需要注意的是,集群数据库的密码需要相同。

./mysql -uroot -p                                #登录mysql,密码粘贴上面记录的初始密码

setpassword=password('123456');        #修改密码

./mysql -uroot -p123456                      #测试修改后的密码是否能够登录

启动ndbd

/usr/local/mysql/bin/ndbd–initial

如果出现下述现象就成功了

最后当所有的节点配置完成,回到管理节点,使用上述说过的show查看,如下的类似显示,证明已经连接完成

到这,数据节点跟sql节点配置就完成了,但是管理节点查看的状态可能还是有些连接不上的,比如上图的sql节点就没有连上,这个时候不要慌,先把集群关闭了,再启动一次就行了

关闭管理节点:

ndb_mgm -e shutdown

关闭SQL节点:

/etc/init.d/mysql.serverstop

启动管理节点:

/usr/local/bin/ndb_mgmd-f /var/lib/mysql-cluster/config.ini

cd /usr/local/bin

ndb_mgm>show

启动数据节点:

/usr/local/mysql/bin/ndbd

启动SQL节点:

/etc/init.d/mysql.serverstart

都启动后结果是下面那样就是成功了

mysql cluster测试

修改mysql密码统一,修改mysql的访问权限,使外部ip能远程访问mysql

cd /usr/local/mysql/bin

GRANT ALL PRIVILEGES ON*.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

然后创建在一台上面创建数据库,看另一台是否被同步,然后创建表,然后新增删除等等。

下列命令都在192.168.74.22上执行,同时在192.168.74.22和192.168.74.23上查看

create database hdp;

show databases;


需要注意的是,创建表的时候必须选择表的引擎为NDBCLUSTER,否则表不会进行同步

use hdp;

CREATE TABLE student(age INT) ENGINE=NDBCLUSTER;


下面是测试的截图

同样的,插入数据,增加、删除、更改库表都会同步,这里就不一一测了。

下面测试其中一台(192.168.74.23)宕机的情况,这里采取停掉服务的方式

/etc/init.d/mysql.serverstop

接下来新增一个表

CREATE TABLE student2(age INT) ENGINE=NDBCLUSTER;

再次启动服务

/etc/init.d/mysql.serverstart

mysql cluster集群启动和关闭

启动mysql集群。启动顺序为:管理节点→数据节点→SQL节点。

启动的命令上面都有,删去--initial即可。

管理节点:

/usr/local/bin/ndb_mgmd-f /var/lib/mysql-cluster/config.ini

cd /usr/local/bin

ndb_mgm>show

数据节点:

/usr/local/mysql/bin/ndbd

SQL节点:

/etc/init.d/mysql.server start

关闭时只需要关闭管理节点,后面的数据节点会同时被关闭,mysql就和原来一样即可

管理节点关闭命令:

ndb_mgm -e shutdown

(执行完成之后管理节点会关闭,数据节点也会关闭,但SQL节点不会,也就是数据库服务需要手动到每一台服务器上停止以保证数据同步)

关闭SQL节点:

/etc/init.d/mysql.serverstop

总结

1、在实际中需要分开数据节点和sql节点。

2、安装最好参考官网的文档进行配置安装,网上的博客安装的可能为旧版本,命令可能不同,连我自己现在写的不知道你看的时候是不是官网又出了新版本,可能在某些地方进行了改动。

3、配置文件过于简单,还有很多配置会在实际中被使用到,需要参考文档进行添加。(my.cnf文件的配置需要根据你的实际进行修改)

4、经过测试各种节点断开、服务器停止、数据库服务停止、未会出现数据异常等特殊情况,但是宕机的机器恢复后如果有删库操作,不会同步,其他删表、删数据不会影响。

你可能感兴趣的:(Mysql-Cluster-7.5集群搭建)