• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > MySQL Cluster搭建与测试

MySQL Cluster搭建与测试

作者:artaganan8 字体:[增加 减小] 来源:互联网 时间:2017-09-17

artaganan8通过本文主要向大家介绍了MySQL,Cluster等相关知识,希望本文的分享对您有所帮助

MySQL Cluster是一个基于NDB Cluster存储引擎的完整的分布式数据库系统。不仅仅具有高可用性,而且可以自动切分数据,冗余数据等高级功能。和Oracle Real Cluster Application不太一样的是,MySQL Cluster 是一个Share Nothing的架构,各个MySQL Server之间并不共享任何数据,高度可扩展以及高度可用方面的突出表现是其最大的特色。虽然目前还只是MySQL家族中的一个新兴产品,但是已经有不少企业正在积极的尝试使用了。但是好像还不是很多,我常常听见人家问这玩意,包括一些企业,虽然该产品还不是很成熟,还有很多缺陷,但是我还是打算学习学习^_^

MySQL Cluster 介绍

简单的说,MySQL Cluster 实际上是在无共享存储设备的情况下实现的一种完全分布式数据库系统,其主要通过 NDB Cluster(简称 NDB)存储引擎来实现。MySQL Cluster 刚刚诞生的时候可以说是一个可以对数据进行持久化的内存数据库,所有数据和索引都必须装载在内存中才能够正常运行,但是最新的 MySQL Cluster 版本已经可以做到仅仅将所有索引装载在内存中即可,实际的数据可以不用全部装载到内存中。

一个 MySQL Cluster 的环境主要由以下三部分组成:
(1)SQL 层的 SQL 服务器节点(后面简称为 SQL 节点);也就是我们常说的MySQL Server。主要负责实现一个数据库在存储层之上的所有事情,比如连接管理,Query 优化和响应 ,Cache 管理等等,只有存储层的工作交给了NDB 数据节点去处理了。也就是说,在纯粹的MySQL Cluster 环境中的SQL 节点,可以被认为是一个不需要提供任何存储引擎的MySQL服务器,因为他的存储引擎有Cluster 环境中的NDB 节点来担任。所以,SQL 层各MySQL服务器的启动与普通的MySQL Server 启动也有一定的区别,必须要添加ndbcluster参数选项才行。我们可以添加在my.cnf配置文件中,也可以通过启动命令行来指定。

(2)Storage 层的 NDB 数据节点;也就是上面说的NDB Cluster。最初的NDB是一个内存式存储引擎,当然也会将数据持久化到存储设备上。但是最新的NDB Cluster存储引擎已经改进了这一点,可以选择数据是全部加载到内存中还是仅仅加载索引数据。NDB 节点主要是实现底层数据存储功能,来保存Cluster 的数据。每一个Cluster节点保存完整数据的一个fragment,也就是一个数据分片(或者一份完整的数据,视节点数目和配置而定),所以只要配置得当,MySQL Cluster在存储层不会出现单点的问题。一般来说,NDB 节点被组织成一个一个的NDB Group,一个 NDB Group实际上就是一组存有完全相同的物理数据的NDB节点群。

上面提到了NDB 各个节点对数据的组织,可能每个节点都存有全部的数据也可能只保存一部分数据,主要是受节点数目和参数来控制的。首先在 MySQL Cluster主配置文件(在管理节点上面,一般为 config.ini)中,有一个非常重要的参数叫NoOfReplicas,这个参数指定了每一份数据被冗余存储在不同节点上面的份数,该参数一般至少应该被设置成2,也只需要设置成2就可以了。因为正常来说,两个互为冗余的节点同时出现故障的概率还是非常小的,当然如果机器和内存足够多的话,也可以继续增大来更进一步减小出现故障的概率。此外,一个节点上面是保存所有的数据还是一部分数据还受到存储节点数目的限制。NDB 存储引擎首先保证NoOfReplicas参数配置的要求来使用存储节点,对数据进行冗余,然后再根据节点数目将数据分段来继续使用多余的NDB节点。分段的数目为节点总数除以NoOfReplicas 所得。

(3)负责管理各个节点的 Manage 节点主机;管理节点负责整个Cluster集群中各个节点的管理工作,包括集群的配置,启动关闭各节点,对各个节点进行常规维护,以及实施数据的备份恢复等。管理节点会获取整个Cluster环境中各节点的状态和错误信息,并且将各 Cluster 集群中各个节点的信息反馈给整个集群中其他的所有节点。由于管理节点上保存了整个Cluster 环境的配置,同时担任了集群中各节点的基本沟通工作,所以他必须是最先被启动的节点。
下面是一幅 MySQL Cluster 的基本架构图(出自 MySQL 官方文档手册):

通过图中我们可以更清晰的了解整个 MySQL Cluster 环境各个节点以及客户端应用之间的关系。
 

MySQL Cluster 环境搭建

搭建 MySQL Cluster首先需要至少一个管理节点主机来实现管理功能,一个SQL节点主机来实现MySQL server功能和两个ndb节点主机实现NDB Cluster的功能。我在这里测试使用双SQL节点来搭建测试环境,具体信息如下:

1、服务器准备

a) MySQL节点1             192.168.0.70
b) MySQL节点2             192.168.0.60
c) ndb节点1               192.168.0.50
d) ndb节点2               192.168.0.40
e) 管理节点                192.168.0.30

2、软件安装

测试环境(5台服务器均一样,不是必须的,所以服务器均已关闭iptables和selinux,生产环境请自行开放相关端口)

[root@localhost ~]# uname -a
Linux localhost.localdomain 2.6.32-220.el6.x86_64 #1 SMP Tue Dec 6 19:48:22 GMT 2011 x86_64 x86_64 x86_64 GNU/Linux

安装 MySQL 节点:

sql节点1: 192.168.0.70
sql节点2: 192.168.0.60

下载安装包:mysql-cluster-gpl-7.2.4-linux2.6-x86_64.tar.gz,我这里使用二进制编译好了的,同学们可以自己下载源码包编译。这里操作一台SQL节点服务器,另外一台SQL节点服务器也是相同的,都执行如下安装步骤。

[root@192.168.0.70 ~]# wget https://downloads.skysql.com/archives/mysql-cluster-gpl-7.2/mysql-cluster-gpl-7.2.4-linux2.6-x86_64.tar.gz
[root@192.168.0.70 ~]# groupadd mysql
[root@192.168.0.70 ~]# useradd -r -g mysql mysql
[root@192.168.0.70 ~]# tar xf mysql-cluster-gpl-7.2.4-linux2.6-x86_64.tar.gz -C /usr/local/
[root@192.168.0.70 ~]# cd /usr/local/
[root@192.168.0.70 local]# ln -s mysql-cluster-gpl-7.2.4-linux2.6-x86_64 mysql
[root@192.168.0.70 local]# cd mysql
[root@192.168.0.70 mysql]# chown -R mysql .
[root@192.168.0.70 mysql]# chgrp -R mysql .
[root@192.168.0.70 mysql]# mkdir /data/mysql
[root@192.168.0.70 mysql]# chown -R mysql.mysql /data/mysql/
[root@192.168.


 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 分享下mysql各个主要版本之间的差异
  • MySQL essential版本和普通版本有什么区别?
  • redhat 5.4下安装MYSQL全过程
  • 如何用SQL命令查看Mysql数据库大小
  • 解析mysql中如何获得数据库的大小
  • 解析mysql修改为utf8后仍然有乱码的问题
  • 5个常用的MySQL数据库管理工具详细介绍
  • 解析在MySQL里创建外键时ERROR 1005的解决办法
  • 解析远程连接管理其他机器上的MYSQL数据库
  • mysql 精简过程(删除一些文件)

相关文章

  • 2018-12-05怎么下载安装mysql?mysql下载安装详情教程
  • 2018-12-05mysql安装配置详解教程(一)_MySQL
  • 2018-12-05MYSQL初学者命令行使用指南
  • 2017-05-11MySQL运行状况查询方式介绍
  • 2018-12-05网上提供的最简便的MySql数据库备份的方法
  • 2018-12-05sql注入实例以及如何防sql注入
  • 2017-05-11mysql中取系统当前时间,当前日期方便查询判定的代码
  • 2017-09-08MySQL 数据库常用命令小结
  • 2018-12-05Mysql日常备份和增量备份脚本
  • 2018-12-05mysql 有关“InnoDB Error ib_logfile0 of different size”错误

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • ACCESS的参数化查询,附VBSCRIPT(ASP)和C#(ASP.NET)函数第1/2页
    • SQLserver 数据库危险存储过程删除与恢复方法
    • MySQL 中group by的实现
    • MySQL延迟关联性能优化方法
    • MySQL事务处理基础入门
    • 详解Mysql数据库之Binlog日志使用代码总结
    • oracle用什么SQL语句判断表存不存在
    • 总结10篇索引操作的实例教程
    • 如何查询占CPU高的oracle进程
    • 分享五个著名的SQL注入漏洞扫描工具

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有