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

mysql ndbcluster 缺点_MySQL集群 -- NDB Cluster相关推荐

  1. MySQL cluster集群/NDB集群学习

    公司主业务用的MySQL集群是官方自带的MySQL Cluster,MySQL自带的集群模式,这个集群的模式和MGR.PXC.主从 有点不一样. 一.存储引擎不是innodb,MySQL Cluste ...

  2. CentOS 7安装MySQL集群-GALERA CLUSTER 4 FOR MYSQL 8 RELEASE

    CentOS 7安装MySQL集群-GALERA CLUSTER 4 FOR MYSQL 8 RELEASE 文章目录 CentOS 7安装MySQL集群-GALERA CLUSTER 4 FOR M ...

  3. Docker高级篇之Mysql主从复制、Redis集群扩容缩容配置案例详解

    Docker之Mysql主从复制.Redis集群扩容缩容配置案例 1. 安装mysql主从复制 1.1 新建主服务器容器实例3307 1.2 进入/mydata/mysql-master/conf目录 ...

  4. 搭建pxc集群时需要先安装mysql么_完美起航-高可用MySQL数据库之PXC集群

    高可用MySQL数据库之PXC集群 前言 在上一篇文章介绍了时下流行的几种数据库产品后(公众号发送"NewSQL"查看),有不少小伙伴表示对自动集群的数据库感兴趣,特别是Cockr ...

  5. Redis 单机模式,主从模式,哨兵模式(sentinel),集群模式(cluster),第三方模式优缺点分析

    Redis 的几种常见使用方式包括: 单机模式 主从模式 哨兵模式(sentinel) 集群模式(cluster) 第三方模式 单机模式 Redis 单副本,采用单个 Redis 节点部署架构,没有备 ...

  6. Redis集群(Cluster)

    Redis集群 集群解决的问题 代理主机和无中心化集群 Redis集群的特点 Redis集群环境搭建 slots(插槽) 在集群中录入值 查询集群中的值 故障恢复 Redis集群的优缺点 集群解决的问 ...

  7. Redis高可用集群Redis Cluster搭建

    前言: Redis3.0版本之前,可以通过Redis Sentinel(哨兵)来实现高可用 ( HA ),从3.0版本之后,官方推出了Redis Cluster,它的主要用途是实现数据分片(Data ...

  8. 两台服务器安装redis集群_Redis Cluster搭建高可用Redis服务器集群

    一.Redis Cluster集群简介 Redis Cluster是Redis官方提供的分布式解决方案,在3.0版本后推出的,有效地解决了Redis分布式的需求,当一个节点挂了可以快速的切换到另一个节 ...

  9. Centos 6.4下 MySQL配置主从服务(集群)

    Centos 6.4下 MySQL配置主从服务(集群) 我们前面两篇文章都分别介绍了Mysql的安装及配置.备份及还原,今天我们继续前面的环境介绍一下Centos 6.4下MySQL配置主从实现数据同 ...

  10. Mysql主从和redis集群哪个好_Redis的三种模式:主从、哨兵、集群

    前言 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.普遍用于目前主流的分布式架构系统中,关于redis的详细 ...

最新文章

  1. iOS 使用Quartz 2D画虚线 .
  2. 合成大西瓜html源码,index.html
  3. 攻略:如何快速赚取积分,Get云栖大会资料
  4. 一文带你认识30个重要的数据结构和算法
  5. 运行stam 遇到的问题:
  6. Carryon的字符串
  7. 感觉自己没有美术天赋,要不要放弃成为艺术生?
  8. 写读后感,获赠陈能技老师亲笔签名书《性能测试诊断分析与优化》中奖名单公布啦!...
  9. java中级项目案例_60个Java练手项目案例,看了让你茅塞顿开~
  10. 安装官方原版win10系统
  11. 生信人的20个R语言习题
  12. Linux配置SSH免密码登录(非root账号)
  13. Android 安卓修改程序图标
  14. win7系统设置无线临时(计算机到计算机)网络 手机,win7系统添加设置无线临时网络的操作方法...
  15. EASYOPS系列|谨慎!勿让持续交付变成bug自动化发布
  16. Linux命令手册-查看文件大小常用命令(df、du、stat)(详解)
  17. 08-Hibernate3.6.2 查询02 by SQL QBC QBE
  18. 美国指责伊朗攻击大坝,“网络松鼠”暗暗窃喜
  19. 剑指offer刷题笔记
  20. OpenWRT(十)web页面更新固件

热门文章

  1. kali无法连接网络(网络不通)
  2. 库存控制系统(inventory control system)
  3. iOS微信分享服务器设置,ios微信分享设置title怎么弄?
  4. 计算机的中央处理器CPU包括什么,中央处理器cpu由哪些组成 中央处理器的作用是什么...
  5. 【计算机组成与结构】中央处理器
  6. Maya Python脚本建模之随机生成多边形并设定目标限制
  7. 超标量处理器设计 姚永斌 第7章 寄存器重命名 摘录
  8. CF 1538 G. Gift Set (贪心+思维)
  9. 接入华为广告不断收到onRewardAdFailedToLoad error 3?
  10. android坐标计算器,函数科学计算器算坐标