Mysql Cluster概述与部署
MySQL Cluster 是一种技术,该技术允许在无共享的系统中部署“内存中”数据库的 Cluster 。通过无共享体系结构,系统能够使用廉价
的硬件,而且对软硬件无特殊要求。此外,由于每个组件有自己的内存和磁盘,不存在单点故障。
MySQL Cluster 由一组计算机构成,每台计算机上均运行着多种进程,包括MySQL服务器,NDB Cluster 的数据节点,管理服务器,以
及(可能)专门的数据访问程序。关于 Cluster 中这些组件的关系。

MySql Cluster最显著的优点就是高可用性,高实时性,高冗余,扩展性强。
它允许在无共享的系统中部署"内存中"数据库的Cluster.通过无共享体系结构,系统能够使用廉价的硬件.此外,由于每个组件有自己的内存
和磁盘,所以不存在单点故障.
它由一组计算机构成,每台计算机上均运行者多种进程,包括mysql服务器,NDB cluster的数据节点,管理服务启,以及专门的数据访问程序
所有的这些节点构成一个完整的mysql集群体系.数据保存在"NDB存储服务器"的存储引擎中,表(结构)则保存在"mysql服务器"中.应用程
序 通过"mysql服务器"访问这些数据表,集群管理服务器通过管理工具(ndb_mgmd)来管理"NDB存储服务器".
基本概念
"NDB"是一种"内存中"的存储引擎,它具有可用性高和数据一致性好的特点.下面介绍mysql cluster 节点时,它表示进程.在单台计算机上可
以有任意数目的节点.

管理节点(MGM):这类节点的作用是管理mysql cluster内的其他节点,如配置文件和cluster 日志,启动并停止节点,运行备份等.cluster中
的每个节点从管理服务器上检索配置数据,并请求管理服务器所在位置的方式.当数据节点内出现新的事件 时,节点将关于这类事件的信息传
输到管理服务器上,然后,又将这类信息写入cluster日志。由于这类节点负责管理其他节点的配置,所以应在启动其他节 点之前首先启动这类
节点.MGM节点是用命令"ndb_mgmd"来启动

数据节点(NDB):这类节点用于保存cluster的数据.数据节点的数目与副本的数目相关,是片段的倍数.假设有2个副本,每个副本有2个片段,
那么就有4个数据节点.不过没有必要设置多个副本.数据节点是用命令"ndbd"来启动的.

SQL节点:这是用来访问cluster数据的节点.对于MYSQL cluster来说,客户端节点是使用NDB cluster存储引擎的传统Mysql服务器.通
常,sql节点使用将"ndbcluster"添加到"my.cnf"后使用"mysqld" 启动

此外,可以有任意数目的cluster客户端进程或应该程序.它们分为两种类型,即标准mysql客户端和管理客户端.
标准mysql客户端:能够从php,perl,c,c++,java,python,ruby等编写的现有mysql应用程序上访问mysql cluster

管理客户端:这类客户端与管理服务器相连,并提供了启动和停止节点,启动和停止消息跟踪,显示节点版本和状态,启动和停止备份等命令.

使用版本
Mysql Cluster版本:mysql-cluster-gpl-7.4.6-linux-glibc2.5-x6_64.tar.gz

管理节点服务器1台----------Sql服务器2台-----------Ndb服务器2台

首先修改所有服务器的hostname
Vi /etc/hosts
192.168.56.200 MGM1
192.168.56.200 SQL1
192.168.56.201 SQL2
192.168.56.200 NDB1
192.168.56.201 NDB2

将节点服务器名配置为:MGM1
将Sql服务器配置为:SQL1,SQL2
将NDB服务器配置为:NDB1,NDB2

一、Sql节点以及Ndb节点安装步骤:

1.首先在节点服务器上安装Centos6.5,不要安装内置Mysql
2.从官方网站上下载Mysql Cluster,这里使用到的版本为Mysql Cluster7.4.6
3.创建用户群,groupadd mysql
4.创建用户,useradd -g mysql mysql
5.解压缩Mysql Cluster包,输入tar -zxvf mysql-cluster-gpl-7.4.6-linux-glibc2.5-x6_64.tar.gz
6.将解压缩后的包移入/usr/local内,输入cp mysql-cluster-gpl-7.4.6-linux-glibc2.5-x6_64 /usr/local/mysql
7.进入mysql文件夹,输入cd /usr/local/mysql
8.输入chown -R root *
9.输入chown -R mysql data
10.输入chgrp -R mysql *
11.安装mysql-cluster,输入scripts/mysql_install_db --user=mysql
12.注册mysql的service,输入cp support-files/mysql.server /etc/rc.d/init.d/mysqld
13.chmod +x /etc/rc.d/init.d/mysqld
14.chkconfig --add mysqld
15.运行service mysqld start启动mysql
my.cnf
[client]
port=3306
socket=/tmp/mysql.sock
[mysqld]
basedir=/usr/local/mysql/
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
ndbcluster
ndb-connectstring=MGM1
[mysql_cluster]
ndb-connectstring=MGM1
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

二、管理节点安装步骤:
1.在管理节点服务器完成上述sql节点和ndb节点安装步骤后,输入cd /usr/local/mysql进入目录
2.cp bin/ndb_mgm*/usr/local/bin
3.cd /usr/local/bin
4.chmod +x ndb_mgm*

三、配置sql节点和ndb节点
mysql服务启动时会默认加载/etc/my.cnf作为其配置文件,要将一个mysql服务器配置成一个数据节点和SQL节点也非常
的简单,这是配置前的my.cnf的内容:
1.[client]
port=3306
socket=/tmp/mysql.sock
[mysqld]
basedir=/usr/local/mysql/
datadir=/usr/local/mysql/data
user= mysql
log-error=/var/lib/mysql/mysqld.err
2.在此基础上在最下方分别加入以下语句:
a) 如果是NDB服务器的情况下输入:
ndbcluster
ndb-connectstring=MGM1
b) 如果是SQL节点服务器的情况下输入
[mysql_cluster]
ndb-connectstring=MGM1
注意所有服务器必须具有相同的配置

四、管理节点服务器的配置
1.cd /var/lib
2.mkdir mysql-cluster
3.vi mysql-cluster/config.ini,创建配置文件
4.在config.ini文件中添加以下内容:
[NDBD DEFAULT]
NoOfReplicas=1 #每个数据节点的镜像数量
DataMemory=500M #每个数据节点中给数据分配的内存
IndexMemory=300M #每个数据节点中给索引分配的内存
[TCP DEFAULT]
portnumber=2202 #数据节点的默认连接端口
[NDB_MGMD] #配置管理节点
hostname=MGM1
datadir=/var/lib/mysql-cluster/ #管理节点数据(日志)目录
[NDBD] #数据节点配置
hostname=NDB1
datadir=/usr/local/mysql/data/ #数据节点目录
[NDBD]
hostname=NDB2
datadir=/usr/local/mysql/data/
[MYSQLD] #SQL节点目录
hostname=SQL1
[MYSQLD]
hostname=SQL2
注释:
[NDBD DEFAULT]:表示每个数据节点的默认配置在每个节点的[NDBD]中不用再写这些选项,只能有一个。
[NDB_MGMD]:表示管理节点的配置,只有一个。
[NDBD]:表示每个数据节点的配置,可以有多个。
[MYSQLD]:表示SQL节点的配置,可以有多个,分别写上不同SQL节点的IP地址,也可以什么都不写,只保留一个空节
点,表示任意一个IP地址都可以进行访问,此节点的个数表明了可以用来连接数据节点的SQL节点总数。

五、启动
1.管理节点的启动:
a) Mysql cluster需要各个节点进行启动后方能够工作,节点的启动顺序为:管理节点——》NDB数据节点——》Sql节
点。因此首先启管理节点
b) cd /usr/local/bin
c) ndb_mgmd -f /var/lib/mysql-cluster/config.ini
d) 注意以上为第一次配置的情况下,如果新增节点,使用./ ndb_mgmd -f /var/lib/mysql-cluster/config.ini --
initial进行加载,不然添加的节点不会出现在集群中
e) 启动时可能会报个WARNING,如WARNING -- at line 7: [TCP] portnumber is deprecated,这个不用管。可以正常
工作的。
f) 启动后可以使用ndb_mgm -e show查看运行状态
2.NDB节点的启动
a) cd /usr/local/bin
b) ./ndbd --initial
c) 如果出现类似以下信息则表明成功连接到管理节点服务器:
2015-06-25 12:48:03 [ndbd] INFO -- Angel connected to 'MGM1:1186'
2015-06-25 12:48:03 [ndbd] INFO -- Angel allocated nodeid: 3
3.SQL节点的启动:
a) service mysqld start
4.客户端管理
a) 在管理服务器中输入cd /usr/local/bin/
b) ./ndb_mgm
c) 在ndb_mgm> 提示符下输入show:

ndb_mgm> show
ClusterConfiguration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @NDB1 (mysql-5.6.24 ndb-7.4.6,Nodegroup:0,Master)
id=3 @NDB2 (mysql-5.6.24 ndb-7.4.6,Nodegroup:1)
[ndb_mgmd(MGM)]1 node(s)
id=1 @MGM1 (mysql-5.6.24 ndb-7.4.6)
[mysqld(API)] 2 node(s)
id=4 @SQL1 (mysql-5.6.24 ndb-7.4.6)
id=5 @SQL2 (mysql-5.6.24 ndb-7.4.6)
5.关闭mysql cluster
a) cd /usr/local/bin
b) ./ndb_mgm -e shutdown
c) 虽然mysql cluster 关闭了,但是SQL节点的mysql服务并不会停止的。接下来就可以做各种试验了。

集群的启动:
1.启动管理节点:
bin/ndb_mgmd -f /opt/mysql-cluster/etc/config.ini --reload --configdir=/opt/mysql-cluster #修改配置文件后要加
上--reload才会生效
2.启动数据节点:
bin/ndbd --connect-string="nodeid=2;host=172.16.48.204:1186" #各个数据节点的nodeid可以在管理节点上show看到
3.启动SQL节点:
bin/mysqld_safe --defaults-file=/opt/mysql-cluster/etc/my.cnf --basedir=/opt/mysql-cluster --datadir=/opt/mysqlcluster/
data --user=mysql &

构建MySQL-Cluster的更多相关文章

  1. mysql集群 MySQL Cluster

    <?php /* 郑重说明2015年6月11日16:28:14,目前为止MySQL Cluster 社区版不支持INNODB,商业版支持,但是授权价格20W左右,so看此文档之前,考虑下钱 My ...

  2. MySQL Cluster 与 MongoDB 复制群集分片设计及原理

    分布式数据库计算涉及到分布式事务.数据分布.数据收敛计算等等要求 分布式数据库能实现高安全.高性能.高可用等特征,当然也带来了高成本(固定成本及运营成本),我们通过MongoDB及MySQL Clus ...

  3. MySQL Cluster 集群简介

    简介 MySQL集群是一种在无共享架构(SNA,Share Nothing Architecture)系统里应用内存数据库集群的技术.这种无共享的架构可以使得系统使用低廉的硬件获取高的可扩展性. My ...

  4. MySQL Cluster 数据分布(分区、分组)

    数据分布 1.MySQL Cluster自动分区数据表(也可能使用用户自定义分区),将数据分布到分区中: 2.一个数据表被划分到多个Data Node分区中,数据在分区中被”striped”: 3.主 ...

  5. MySQL Cluster 7.3.5 集群配置实例(入门篇)

    一.环境说明: CentOS6.3(32位) + MySQL Cluster 7.3.5,规划5台机器,资料如下: 节点分布情况: MGM:192.168.137. NDBD1:192.168.137 ...

  6. MySQL Cluster 7.3.5 集群配置参数优化(优化篇)

    按照前面的教程:MySQL Cluster 7.3.5 集群配置实例(入门篇),可快速搭建起基础版的MySQL Cluster集群,但是在生成环境中,还是有很多问题的,即配置参数需要优化下, 当前生产 ...

  7. 【推荐】MySQL Cluster报错及解决方法(不断更新中)

    排查问题技巧: MySQL Cluster 自带了一个错误代码的查看的小程序.通过这个小东西我们可以方便的定位问题的原因. 这个程序就是 perror 在MYSQL安装目录的bin下面. 如报错:ER ...

  8. MySQL Cluster搭建与测试

    MySQL Cluster是一个基于NDB Cluster存储引擎的完整的分布式数据库系统.不仅仅具有高可用性,而且可以自动切分数据,冗余数据等高级功能.和Oracle Real Cluster Ap ...

  9. 1 构建Mysql+heartbeat+DRBD+LVS集群应用系统系列之DRBD的搭建

    preface 近来公司利润上升,购买了10几台服务器,趁此机会,把mysql的主从同步的架构进一步扩展,为了适应日益增长的流量.针对mysql架构的扩展,先是咨询前辈,后和同事探讨,准备采用Mysq ...

  10. MySQL Cluster 配置文件(config.ini)详解

    MySQL Cluster 配置文件(config.ini)详解 ################################################################### ...

随机推荐

  1. EZ 2018 07 06 NOIP模拟赛

    又是慈溪那边给的题目,这次终于没有像上次那样尴尬了, T1拿到了较高的暴力分,T2没写炸,然后T3写了一个优雅的暴力就203pts,Rank3了. 听说其它学校的分数普遍100+,那我们学校还不是强到 ...

  2. iOS开发简记(2):自定义tabbar

    tabbar是放在APP底部的控件.常见的APP都使用tabbar来进行功能分类的管理,比如微信.QQ等等. 小程需要一个特殊一点的tabbar,要求突显中间的那个按钮,让中间按钮特别显眼,从而引导用 ...

  3. 【nodejs】让nodejs像后端mvc框架(asp.net mvc)一样处理请求--目录(8/8 完结)

    为什么要做这个 在使用nodejs开发过程中,总是发现需要做很多重复性的体力劳动,且因为自身是服务端程序员出身,感觉有一些服务端好的东西其实可以在nodejs上得到应用并能提高一些开发工作效率. 本系 ...

  4. C#_Math函数总结

    Math.abs() 计算绝对值. Math.acos() 计算反余弦值. Math.asin() 计算反正弦值. Math.atan() 计算反正切值. Math.atan2() 计算从x 坐标轴到 ...

  5. 2018年高教社杯全国大学生数学建模竞赛D题解题思路

    题目 D题   汽车总装线的配置问题 一.问题背景 某汽车公司生产多种型号的汽车,每种型号由品牌.配置.动力.驱动.颜色5种属性确定.品牌分为A1和A2两种,配置分为B1.B2.B3.B4.B5和B6 ...

  6. Elasticsearch学习总结 (Centos7下Elasticsearch集群部署记录)

    一.  ElasticSearch简单介绍 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticse ...

  7. Linux内核分析——第四章 进程调度

    第四章 进程调度 4.1 多任务 1.多任务操作系统就是能同时并发的交互执行多个进程的操作系统. 2.多任务操作系统使多个进程处于堵塞或者睡眠状态,实际不被投入执行,这些任务尽管位于内存,但是并不处于 ...

  8. 《Gogoing》Alpha版会议总结

    一.开会的过程 首先大家对自己的任务进行了汇报,然后大家就当前最需要解决的问题提出解决方案,最后相互鼓励,相互帮助,探讨下一步该怎么做. 二.讨论的问题 百度地图API代码和界面代码为什么对接不上? ...

  9. python 中的三元表达式及lambda

    一.三元表达式 举一个简单的列子,很多地方都有这样的规定,比如用水或者用电,假设用水价格为3R/立方米,当你每个月用超过7立方米后,超出的水按照3.3R/立方米计价.然后写一个程序计算一个家庭每月的水 ...

  10. 文件I/O操作

    熟悉文件的各种流类 了解字符的编码 掌握文件I/O操作的相关概念 了解对象的序列化 简单的引入 I:input  由外围输入到内存 O:output  由内存写出到外存. I/O:是相对于内存来说的 ...