您的位置:首页 > 数据库 > MySQL

MYSQL 搭建集群

2016-05-20 19:11 471 查看
MySQL从结构看,由3类节点(计算机或进程)组成,分别是:

管理节点:用于给整个集群其他节点提供配置、管理、仲裁等功能。理论上通过一台服务器提供服务就可以了。

数据节点:MySQL Cluster的核心,存储数据、日志,提供数据的各种管理服务。2个以上 时就能实现集群的高可用保证,DB节点增加时,集群的处理速度会变慢。

SQL节点(API):用于访问MySQL Cluster数据,提供对外应用服务。增加 API 节点会提高整个集群的并发访问速度和整体的吞吐量,该节点 可以部署在Web应用服务器上,也可以部署在专用的服务器上,也开以和DB部署在同一台服务器上。

NDB引擎

MySQL Cluster 使用了一个专用的基于内存的存储引擎——NDB引擎,这样做的好处是速度快, 没有磁盘I/O的瓶颈,但是由于是基于内存的,所以数据库的规模受系统总内存的限制, 如果运行NDB的MySQL服务器一定要内存够大,比如4G, 8G, 甚至16G。NDB引擎是分布式的,它可以配置在多台服务器上来实现数据的可靠性和扩展性,理论上 通过配置2台NDB的存储节点就能实现整个数据库集群的冗余性和解决单点故障问题。



现在的目标是搭建SQL节点(3个),data 节点(3个),管理节点(1个)

步骤如下:

##环境介绍

MANAGER NODE:188.188.2.181

SQL/DATA节点:188.188.2.181/182/183

(1)安装虚拟机

我的虚拟机是CENTOS 7版本的,安装了GNOME图形化界面,32G 内存+500G的硬盘空间

(2)安装MYSQL数据库(cluster version)

从MYSQL官网下载集群版本的MYSQL :http://dev.mysql.com/downloads/cluster/

我下载的是mysql-cluster-gpl-7.4.11-linux-glibc2.5-x86_64.tar.gz

然后用SSH或者WINSCP工具将下载好的mysql放到你想放的位置,我的是放在/usr/local

直接解压 tar -zxvf mysql-cluster-gpl-7.4.11-linux-glibc2.5-x86_64.tar.gz

因为名字太长,可以rename, mv mysql-cluster-gpl-7.4.11-linux-glibc2.5-x86_64 mysql

(3)关闭防火墙

关闭selinux ,即 gedit /etc/selinux/config----将selinux=enforcing改为selinux=disabled

(用命令systemctl start/disable firewall.service)

查看防火墙状态用 firewall-cmd --state ,显示not running即为关闭了防火墙

----重启系统

******设置IP

这一步如果已经做了,就直接SKIP掉:

因为安装虚机的时候,是要配置网络适配器,分为internet和vmnetwork,其中设置internet是要访问外网的,vmnetwork是访问内网的,要在network中设置ip,具体可访问我的“CENTOS 7 设置IP”的博客

(4)创建用户和用户组

三台虚拟机公共配置:

GROUPADD MYSQL

USERADD -G MYSQL MYSQL

(5)配置管理节点

1、创建config.ini 文件

mkdir /var/lib/mysql-cluster

cd /var/lib/mysql-cluster

gedit config.ini

内容如下:

[NDBD DEFAULT]:表示每个数据节点的默认配置在每个节点的[NDBD]中不用再写这些选项,只能有一个。

[NDB_MGMD]:表示管理节点的配置,只有一个。

[NDBD]:表示每个数据节点的配置,可以有多个。

[MYSQLD]:表示SQL节点的配置,可以有多个,分别写上不同SQL节点的IP地址,也可以什么都不写,只保留一个空节点,表示任意一个IP地址都可以进行访问,此节点的个数表明了可以用来连接数据节点的SQL节点总数

2、管理节点的安装

cd /usr/local/mysql

cp bin/ndb_mgm*/usr/local/bin

cd /usr/local/bin

chmod +x ndb_mgm*

管理节点只要ndb_mgm和ndb_mgmd两个文件和一个配置文件即可,因此把这三个文件复制到那里,那里就是管理节点了。ndb_mgmd是mysql cluster管理服务器,ndb_mgm是客户端管理工具,等一下会用到它们的。到目前为止两个SQL节点两个数据节点和一个管理节点都安装完成了,但是还不能工作,得进行配置,把这几个节点联系在一起协同工作

--------------------------------------------

(6)mysql-cluster配置---(数据节点和SQL节点)

CD /USR/LOCAL/MYSQL

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

shell> chown mysql.mysql /usr/local/mysql -R

shell> chmod 755 /usr/local/mysql/scripts/*

shell> chmod 755 /etc/rc.d/init.d/mysqld

shell> sed -i "/\[mysqld\]/a datadir=/usr/local/mysql/data" /etc/my.cnf

shell> /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

shell> chown mysql:mysql -R /usr/local/mysql/data

shell> cd /usr/local/mysql/bin/

shell> cp ndb_mgm* /usr/local/bin/

shell> gedit /etc/my.cnf

-------------------------

[mysql_cluster]

ndb-connectstring=188.188.2.181#181、182、183的my.cnf设置都是一样的,即ndb-connectstring=188.188.2.181

[mysqld]

datadir=/usr/local/mysql/data

ndbcluster

ndb-connectstring=188.188.2.181#181、182、183的my.cnf设置都是一样的,即ndb-connectstring=188.188.2.181

-------------------------

(7)启动mysql-cluster

---启动顺序management node--data node(每台虚拟机都要执行)---sql node(每台虚拟机都要执行)

CD /USR/LOCAL/MYSQL/BIN

#启动管理节点

shell> ./ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial

##--initial参数第一次启动时加上,和在CONFIG.INI中增加节点,也要加

#启动数据节点

shell> ndbd #--initial ##初始化数据库,用在备份,恢复时,除了第一次启动要,其他都不用加--initial

#每台节点的机器都要执行

2014-02-27 18:14:23 [ndbd] INFO -- Angel connected to '10.10.54.154:1186'

2014-02-27 18:14:23 [ndbd] INFO -- Angel allocated nodeid: 2

#启动sql节点,每台虚拟机上都要执行

shell>/usr/local/mysql/bin/mysqld_safe --user=mysql &

//查看mysql集群状态

shell> ndb_mgm

ndb_mgm> show #查看数据节点和SQL节点是都都连上

ndb_mgm> all report memory #查看节点使用内存情况

(8)关闭集群

先关掉SQL节点再关掉管理节点(数据节点和管理节点是一起的)

关闭SQL节点

shell>/usr/local/mysql/bin/mysqladmin -u root -p shutdown

关闭管理节点(数据节点)
CD /USR/LOCAL/MYSQL/BIN

./NDB_MGM -E SHUTDOWN

、、。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

测试集群

在188.188.2.181上,

/usr/local/mysql/bin/mysql -u root -p

创建数据库表时要加上集群引擎,即:create table test(id int) engine=NDB;否则同步失败.集群引擎只有NDB或者NDBCLUSTER

在182或者183上登录mysql查看数据库里是否表和数据与181相同。

至此,MYSQL CLUSTER已经部署好了!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: