MySQL Cluster安装

一、概述

MySQL Cluster 是MySQL 适合于分布式计算环境的高实用、可拓展、高性能、高冗余版本,其研发设计的初衷就是要满足许多行业里的最严酷应用要求,这些应用中经常要求数据库运行的可 靠性要达到99.999%。MySQL Cluster允许在无共享的系统中部署“内存中”数据库集群,通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求。此外,由于每个组 件有自己的内存和磁盘,不存在单点故障。

实际上,MySQL集群是把一个叫做NDB的内存集群存储引擎集成与标准的MySQL服务器集成。它包含一组计算机,每个都跑一个或者多个进程,这可能包括一个MySQL服务器,一个数据节点,一个管理服务器和一个专有的一个数据访问程序。

MySQL Cluster能够使用多种故障切换和负载平衡选项配置NDB存储引擎,但在Cluster 级别上的存储引擎上做这个最简单。以下为MySQL集群结构关系图,

 

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的存储节点就能实现整个数据库集群的冗余性和解决单点故障问题。

缺陷

  • 基于内存,数据库的规模受集群总内存的大小限制
  • 基于内存,断电后数据可能会有数据丢失,这点还需要通过测试验证。
  • 多个节点通过网络实现通讯和数据同步、查询等操作,因此整体性受网络速度影响,因此速度也比较慢

优点

  • 多个节点之间可以分布在不同的地理位置,因此也是一个实现分布式数据库的方案。
  • 扩展性很好,增加节点即可实现数据库集群的扩展。
  • 冗余性很好,多个节点上都有完整的数据库数据,因此任何一个节点宕机都不会造成服务中断。

实现高可用性的成本比较低,不象传统的高可用方案一样需要共享的存储设备和专用的软件才能实现,NDB 只要有足够的内存就能实现。

我们搭建一个最简化的MySQL Cluster系统,配置方法中的所有命令都是以root账户运行。这个MySQL Cluster包含一个管理结点、两个数据结点、两个SQL结点,这五个结点会分别安装在4个服务器上,服务器的名称和IP如下所示:

名称

IP

管理节点

192.168.0.35

数据节点一

192.168.0.37

数据节点二

192.168.0.38

SQL节点一

192.168.0.35

SQL节点二

192.168.0.36

管理节点、数据节点、SQL节点的进程不冲突,也可以放在同一台服务器上。这里我们的管理节点和一个SQL节点放在了一起。操作系统版本centOS 6.5 。

 

二、安装

  1. 下载MySQL Cluster

下载地址 http://dev.mysql.com/downloads/cluster/ , 选择当前GA版本的前一个版本 7.3.12,下载mysql-cluster-gpl-7.3.12-linux-glibc2.5-x86_64.tar.gz

 

    2. 安装MySQL Cluster

首先,更改selinux设置并关闭操作系统防火墙

vi /etc/sysconfig/selinux

SELINUX=disabled

chkconfig iptables off

chkconfig ip6tables off

然后,卸载系统已经存在的mysql

查看已经安装的mysql

rpm -qa|grep mysql  

卸载对应的mysql组件, mysqlxxx 代表查看的mysql组件

rpm -e mysqlxxx --nodeps  

建立mysql安装文件存放的目录,并将下载好的mysql-cluster-gpl-7.3.12-linux-glibc2.5-x86_64.tar.gz 复制到此目录下

mkdir -p /u01/soft  

解压缩mysql-cluster

tar zxvf mysql-cluster-gpl-7.3.12-linux-glibc2.5-x86_64.tar.gz

将其移至/usr/local/mysql

mv mysql-cluster-gpl-7.3.12-linux-glibc2.5-x86_64 /usr/local/mysql

创建用户群

groupadd mysql

创建用户

useradd -g mysql mysql

cd /usr/local/mysql

赋权

chown -R root *

chown -R mysql data

chgrp -R mysql *

mkdir -p /u01/backup/mysql/log

chown -R mysql /u01/backup/mysql

安装依赖

yum -y install libaio*

安装mysql

scripts/mysql_install_db --user=mysql

innodb较完整安装脚本如下:

scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data --pid-file=/data/mysql/data/mysql.pid --tmpdir=/tmp

 

3. 配置管理节点

vi /u01/backup/mysql/cluster/config.ini 

内容如下:

[NDBD DEFAULT]

#每个数据节点的镜像数量

NoOfReplicas=1

#每个数据节点中给数据分配的内存

DataMemory=500M

#每个数据节点中给索引分配的内存

IndexMemory=300M

MaxNoOfTables=1024

MaxNoOfAttributes=5000000

MaxNoOfOrderedIndexes=10000

#配置管理节点

[NDB_MGMD]

NodeId=1

hostname=192.168.0.35

#管理节点数据(日志)目录

datadir=/u01/backup/mysql/cluster/

#数据节点配置

[NDBD]

NodeId=2

hostname=192.168.0.37

#数据节点目录

datadir=/u01/backup/mysql/data/

[NDBD]

NodeId=3

hostname=192.168.0.38

datadir=/u01/backup/mysql/data/

#SQL节点目录

[MYSQLD]

NodeId=4

hostname=192.168.0.35

[MYSQLD]

NodeId=5

hostname=192.168.0.36

 

配置管理节点的启停服务

vi /etc/init.d/ndb_mgmd

#!/bin/sh

#

# rhnsd:        Starts the Unbreakable Linux Network Daemon

#

# chkconfig: 345 99 10

# description:  This is a daemon which handles the task of connecting \

#               periodically to the Unbreakable Linux Network servers to \

#               check for updates, notifications and perform system \

#               monitoring tasks according to the service level that \

#               this server is subscribed for

#

# processname: rhnsd

# pidfile: /var/run/rhnsd.pid

#

 

MYSQL_HOME=/usr/local/mysql

CONF_HOME=/u01/backup/mysql/cluster

 

export  MYSQL_HOME CONF_HOME

 

case $1 in

'start')

        cd $MYSQL_HOME/bin

        ./ndb_mgmd -f $CONF_HOME/config.ini &

        ;;

'stop')

        cd $MYSQL_HOME/bin

        ./ndb_mgm -e shutdown &

        ;;

'status')

        cd $MYSQL_HOME/bin

        ./ndb_mgm -e show &

        ;;

*)

        echo "usage: $0 {start|stop}"

        exit

        ;;

esac

#

exit

赋权

chmod +x /etc/init.d/ndb_mgmd

注册服务

chkconfig --add ndb_mgmd

调用服务示例

service ndb_mgmd start | stop | status

 

4. 配置数据节点和SQL节点

mysql服务启动时会默认加载/etc/my.cnf作为其配置文件,修改my.cnf

vi /etc/my.cnf

[mysql]

default-character-set=utf8

[client]

default-character-set=utf8

socket=/tmp/mysql.sock

[mysqld]

basedir=/usr/local/mysql

datadir=/u01/backup/mysql/data

user=mysql

log-error=/u01/backup/mysql/log/error.log

character-set-server=utf8

collation-server=utf8_general_ci

ndbcluster

ndb-connectstring=192.168.0.35

[mysql_cluster]

ndb-connectstring=192.168.0.35

SQL 节点需要制作mysqld的启动服务

cd /usr/local/mysql

复制mysqld的服务

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

注册服务

chkconfig --add mysqld

调用服务示例

service mysqld start | stop | status

 

5. 启动群集

Mysql cluster需要各个节点进行启动后方能够工作,节点的启动顺序为:管理节点à 数据节点à SQL节点。关闭顺序为先关闭SQL节点,然后关闭管理节点(数据节点会由管理节点关闭)。

首先,在192.168.0.35上启动管理节点,群集节点有调整情况下需要加 --initial

service ndb_mgmd start

其次,在 192.168.0.37、192.168.0.38分别启动数据节点,请注意数据节点第一次启动时需带上 --initial 参数,后续启动则不要加此参数

cd /usr/local/bin

./ndbd --initial

最后,在 192.168.0.35、192.168.0.36分别启动SQL节点

service mysqld start

启动后可以用下述命令查看集群状况

service ndb_mgmd status

 

6. 测试群集

在 192.168.0.35 的SQL节点上用客户端 建立 d1 数据库 及表 t1, 并插入一条数据。特别注意,建表时需要制定使用ndbcluster引擎,如下红色字体。

cd /usr/local/mysql/bin

./mysql u root

create database d1;

use d1;

create table t1 (id int(11) not null, name varchar(32) not null, primary key (id)) ENGINE=ndbcluster DEFAULT CHARSET=utf8;

insert into t1 values(1,'jacky');

然后在 192.168.0.36 上查询

cd /usr/local/mysql/bin

./mysql u root

select * from d1.t1 ;

 

其它,改密码并赋予其它客户端相关权限

set password = password('xxx');

grant all privileges on *.* to root@'%' identified by 'xxx';

 

7. 关闭群集

在 192.168.0.35、192.168.0.36分别停止SQL节点服务

service mysqld stop

在 192.168.0.35管理节点上停止集群服务

service ndb_mgmd stop

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值