`
youyu4
  • 浏览: 426610 次
社区版块
存档分类
最新评论

MySQL集群 -- NDB Cluster

 
阅读更多

MySQL集群 -- NDB Cluster

 

MySQL集群的表使用的引擎是ndbcluster,简称ndb。

它的意思是: "网络数据库".NDB(也叫NDB Cluster或者NDBCLUSTER),使用它才能让MySQL支持集群。

 

  • 要想获得MySQL Cluster 的功能,必须安装 mysql-server 和 mysql-max RPM
  • 内存数据库
  • 由多个节点组成,每个节点有对应的内存和磁盘,没有单点故障的问题
  • MySQL Cluster 能够使用多种故障切换和负载平衡选项配置NDB存储引擎

 


 

 

 

 

以前有了解过MySQL主从,现在的集群必须和主从区分开来,两者的区别是:

 

  • 在复制系统中,一个MySQL主服务器会更新一个或多个从服务器.事务是顺序地提交的,因此一个慢事务就可能导致从服务器比主服务器落后一段时间.这也意 味着,如果主服务器出错失败了,那么从服务器可能会缺少记录最后的那一小部分事务日志.如果使用的是事务安全存储引擎的话,例如InnoDB, 那么事务日志则会完全记录到从服务器上去或者完全不记录,但是复制不能保证主和从服务器上的数据总是保持一致性.
  • 在MySQL集群中,所有的数据总是保持 同步,在任何数据节点上提交的事务都同步到所有其他的数据节点上了.如果有一个数据节点失败了,其他正常的数据节点照样能保持数据的一致性.

 

简单讲,就是主从会导致从数据库的事务慢一些,在事务出错时,从服务器就不会执行,导致主服务器有错误日志,从服务器没有,这样日志数据就不一致(对数据的及时性、完整性进行了优化)。

 

 

 

集群的建议

 

      集群最少要求有3台计算机.不过我们建议最好是4台;有2台分别运行管理节点和SQL节点,另外2台作为数据节点.采取2台数据节点的目的是提高数据的冗余度,管理节点放在一个独立的主机上是为了能够保证在万一有一台数据节点失败的情况下提供仲裁服务。

 

 

 

集群中各个节点的作用

 

      MySQL集群既有物理也有逻辑组织,每台计算机都作为物理基础元素.集群中的逻辑基础元素称为 节点,集群中的每个逻辑和功能基础元素也称为 集群主机.共有3中节点类型,每个在集群中都有对应的不同角色,分别如下:



 

  • 管理节点(MGM node): 提供整个集群的管理服务,包括启动,关闭,备份,数据配置等.管理节点是由 ndb_mgmd 应用程序来提供的;管理节点的客户端用 ndb_mgm。
  • 数据节点: 存储和复制数据,系统会尽量将数据放在内存中,由进程(ndbd 来处理的。
  • SQL 节点: 这是用来访问数据节点的,一个SQL节点就是一个使用NDB引擎的mysql server进程(mysqld),用于供外部应用提供集群数据的访问入口。

启动节点

 

需要按以下顺序分别启动集群中的各个节点:

 

  • 用 ndb_mgmd 命令启动管理节点.
  • 用 ndbd 分别启动每个数据节点.
  • 用 mysqld_safe --user=mysql & 命令启动每个SQL节点.

上面的命令都需要在系统的shell下运行(在服务器上执行或通过终端都可以).可以在管理节点上的 ndb_mgm 客户端工具中执行 SHOW 或 ALL STATUS 命令来确认集群是否在运行状态。

 

 

停止节点

 

在 MGM 客户端中运行 SHUTDOWN 命令即可关闭运行中的集群.另外,也可以在管理节点主机中执行一下命令来关闭:

 

shell> ndb_mgm -e "SHUTDOWN"

注意,括号中的内容可以是别的,并且 SHUTDOWN 可以不区分大小写.

 

这些命令的任何一个都能平和地关闭 ndb_mgm, ndb_mgmd(笔误?), ndbd 中的任何进程.运行MySQL集群的SQL节点服务器则通过 mysqladmin shutdown 来关闭.

 

 

 

 

缺点

 

      NDB的事务隔离级别只支持Read Committed,而Innodb支持所有的事务隔离级别,默认使用Repeatable Read。

 

 

 

 

使用集群时遇到的问题

 

ERROR 1114: The table 'my_cluster_table' is full

 

原因

很有可能是因为你设置的内存不足以装下所有的数据表及其索引,包括 NDB 存储引擎中所需的主键以及如果没有定义主键时自动创建的索引.

 

所有的数据节点的内存大小都要一样,由于集群中任何数据节点都不能使用比其他数据节点最小内存还多的内存.换句话说,如果集群中有4台计算机,如果有3台计算机的内存都是3GB,而另外一台只有1GB,那么每个数据节点最多只能拿出1GB内存用于集群。

 

 

 

MySQL集群的局限性

 

MySQL 5.0中的 NDB 表存在以下局限性:

 

  • 不支持临时表;执行 CREATE TEMPORARY TABLE 语句时如果指定 ENGINE=NDB 或者ENGINE=NDBCLUSTER 参数就会报错.
  • 不支持 FULLTEXT 索引以及前缀索引.只能对整个字段进行索引.
  • 不支持空间数据类型.详情请看 Chapter 16, Spatial Extensions.
  • 只支持完全的回滚事务.不支持部分回滚和回滚到保存点也不支持.
  • 一个表最大的属性数为128,并且每个属性名不能超过31个字符.对每个表来说,数据库和表明的联合长度最大是122个字符.
  • 表中一条记录最大值为8KB,不包含 BLOB 的值.表的大小取决于各种制约因素,尤其是每个数据节点最大的可用内存.
  • NDB 存储引擎不支持外键.跟 MyISAM 一样,它们都不支持.

 

 

 

MySQL集群数据类型

 

MySQL集群支持所有常用的数据类型,除了跟MySQL相关的空间扩展类型

 

另外,NDB

表的索引也有些不同. 注意: MySQL集群表(即 NDB 或 NDBCLUSTER 类型表)只支持固定长度记录.这也意味着(举例)如果有一条记录包含有 VARCHAR(255) 字段,那么它就会需要用到255个字符的空间(和数据表使用的字符集和校验所要求的空间一样大),而不管实际存储的字符数.这个问题在未来的发行版中会得到解决.

 

 

 

集群停止后,数据会怎样?

 

本来保存在内存中的集群数据都会写到磁盘中,下次集群启动的时候就会重新载入到内存中.

 

 

 

参考:

http://imysql.cn/node/161

https://www.2cto.com/database/201504/387166.html

  • 大小: 101 KB
  • 大小: 71.6 KB
分享到:
评论

相关推荐

    mysql-cluster-ndb-bindings:MySQL 集群的 NDB 绑定。 源代码来自https

    mysql-cluster-ndb-bindings MySQL 集群的 NDB 绑定。 源代码来自 。 进行了更改以使其与 mysql cluster 7.3 一起使用。描述(取自原始项目): NDB/Bindings 是一个为 C++ NDBAPI 提供包装器的项目。 这些连接器...

    MySQL Cluster(MySQL 集群)

    MySQL Cluster(MySQL 集群) 测试环境: CentOS4.6 数据库版本: mysql-cluster-gpl-6.3.20

    MySQL-Cluster-server-gpl-7.3.7-1.el6.x86_64

    它采用了NDB Cluster 存储引擎,允许在1个 Cluster 中运行多个MySQL服务器。MySQL Cluster 使用了一个专用的基于内存的存储引擎——NDB引擎,这样做的好处是速度快, 没有磁盘I/O的瓶颈,但是由于是基于内存的,所以...

    MySQLCluster(MySQL集群)V7.6.10官方安装版(附安装配置教程)64位

    MySQL Cluster 是专门用来做MySQL集群的程序,简单来讲它是一种技术,该技术能够在无共享的系统中部署内存中数据库的“Cluster”,通过无共享体系结构,系统能够使用各种廉价的硬件,并对所有硬件没有任何特殊的要求...

    CentOS8部署Mysql NDB Cluster8+Mysql Router8方案及应用.pdf

    CentOS8部署Mysql NDB Cluster8+Mysql Router8方案及应用~~~~

    MySQL集群环境搭建.docx

    MySQL集群搭建详细介绍及实现,3常用命令或问题 1)ndb_mgmd管理命令:/usr/local/mysql/bin/ndb_mgm 执行之后就是管理控制台了,里面可以继续输入命令。 查看集群里面的全部节点的状态:show 2)停止集群服务器的...

    MySQL Cluster集群搭建详解

    用于新手搭建学习,高手飘过。搭建过程中,注意各系统的环境不一致,可能会出现其他错误

    mysql cluster集群安装以及故障处理

    MySQL Cluster 是 MySQL 适合于分布式计算环境的高实用、高冗余版本。它采用了NDB Cluster 存储引擎,允许在1个 Cluster 中运行多个MySQL服务器。 MySQL Cluster 是一种技术,该...2、mysql cluster 集群故障处理手册

    第一章(mysql-cluster集群搭建).md

    mysql集群方式:支持3台服务器,采用NDB方式,在centos7环境已经进行验证。效率大大提高,参考官网进行使劲论证

    mysql cluster搭建实战

    系统:centos7.3 Mysql集群版本:mysql-5.6.29 ndb-7.4.11 五台机器做集群实验,实战教程。

    MySQL Cluster 3台机器搭建集群环境

    ndb是一种存储引擎,通常在mysql cluster中使用,MySQL Cluster 是一个基于NDB Cluster 存储引擎的完整的分布式数据库系统。 和Oracle Real Cluster Application 不太一样的是,MySQL Cluster 是一个Share Nothing ...

    mysql集群化的三种武器-MNC,MGC与MIC【2019】.rar

    MySQL NDB Cluster(MNC),MySQL Galera Cluster(MGC),MySQL InnoDB Cluster(MIC),这三者是MySQL历史上三种不同的集群实现方式。在我的前东家人人网的时候,我实践过MNC,在目前的去哪儿网,我们正在维护者...

    利用MySQL Cluster 7.0 + LVS 搭建高可用环境

    利用MySQL Cluster 7.0 + LVS 搭建高可用环境 周三, 2009/05/13 - 10:19 — yejr 目录: • 1、前言 • 2、安装 • 2.1 LVS 安装、配置 • 2.2 MySQL Cluster安装 • 3、测试 • 3.1 mysqlslap测试结果 •...

    MySQL集群

    MySQL集群是一个无共享的、分布式节点架构的存储方案,其目的是提供容错性和高性能.是MySQL适合于分布式计算环境的高可用、高性能版本,它采用了NDB Cluster存储引擎 MySQL集群主要包括三个组成部分:管理节点、数据...

    使用Linux之安装MySQLCluster集群.docx

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

    老男孩Mysql高级DBA 实战新浪首席DBA 老男孩教育杨海朝老师全程主讲 老男孩Mysql视频.txt

    │ 1006高可用方案之NDBCluster_rec.mp4 │ 1007数据库中间层_rec.mp4 │ 1008总结_rec.mp4 │ MySQL培训(10).pdf │ MySQL培训(10)_MySQL高可用方案之LVS+keeplived+MM.docx │ MySQL培训(10)_MySQL高可用...

    MySQL进阶-高可用、分布式、主从复制原理、备份恢复

    集群解决方案:如MySQL Group Replication, MySQL NDB Cluster等。 自动故障转移:当主服务器宕机时,自动将一个从服务器提升为新的主服务器。 分布式系统 定义:一个系统由多个独立的、地理位置分散的节点组成,...

    BBS 负载均衡文档2009-09-04.doc

    一、mysql集群 ...ndbcluster ndb-connectstring=192.168.0.102 #注192.168.0.102为mysql集群管理端地址。 [mysql_cluster] ndb-connectstring=192.168.0.102 ....................请下载支持一下,谢谢。

    MySQL8中文参考手册 .chm

    关于MySQL集群的信息,请参阅7.5、MySQL NDB Cluster NDB簇7.6 MySQL 8的特点。本手册介绍了不包含在MySQL 8的每一个版本的功能;这种功能可能不包含在MySQL 8版授权给你。如果你有任何问题的特征包含在你的MySQL...

    MySQL5+MySQL8中文手册(chm文件)

    关于MySQL集群的信息,请参阅7.5、MySQL NDB Cluster NDB簇7.6 MySQL 8的特点。本手册介绍了不包含在MySQL 8的每一个版本的功能;这种功能可能不包含在MySQL 8版授权给你。如果你有任何问题的特征包含在你的MySQL 8...

Global site tag (gtag.js) - Google Analytics