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

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-8.0.20-winx64.zip

    6. **安装与配置**:解压“mysql-cluster-8.0.20-winx64.zip”后,用户需要按照官方文档的步骤进行安装,包括设置环境变量、配置管理节点、数据节点和SQL节点,并进行集群初始化。 7. **管理工具**:MySQL Cluster...

    MySQL Cluster 8.0.27(mysql-cluster-8.0.27-winx64.zip)

    MySQL Cluster 8.0.27 是一个高度可用、可扩展的数据库解决方案,专为对...在Windows环境下,通过解压`mysql-cluster-8.0.27-winx64.zip`文件,按照官方文档的步骤,用户可以快速部署和配置自己的MySQL Cluster环境。

    mysql-cluster-gpl-7.2.4-win32

    7. 安装与配置:`mysql-cluster-gpl-7.2.4-win32.msi`是一个Windows Installer包,用于简化MySQL Cluster的安装过程。用户只需按照向导步骤即可完成安装,然后根据企业需求配置集群参数,如节点数量、数据分区策略等...

    linux下MySQL-Cluster集群研究.doc linux下MySQL-Cluster集群研究.doc

    【MySQL-Cluster集群在Linux下的配置详解】 MySQL-Cluster是一种高可用、高性能的数据库解决方案,它提供了数据的分布式存储和处理能力,确保即使在部分硬件故障的情况下也能保持服务的连续性和数据的一致性。本篇...

    MySQL-Cluster 集群安装部署

    3. 管理节点(ndb-mgm): 管理节点负责管理 MySQL-Cluster 的集群,提供集群管理和监控功能。 MySQL 集群安装实施 以下是 MySQL-Cluster 的安装实施步骤: 1. 硬件环境: 需要满足一定的硬件环境,包括操作系统...

    mysql_cluster集群

    1. **安装所需的软件包**:从 MySQL 官方网站下载 MySQL Cluster 的各个组件,例如 MySQL-Cluster-gpl-client、MySQL-Cluster-gpl-management 等。 2. **配置环境**:确保运行环境满足要求,例如 RHEL5.4,禁用 ...

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

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

    mysql-cluster-gpl-7.2.8.tar.gz

    这个压缩包文件包含了一系列用于部署和管理MySQL集群的组件和工具。 MySQL Cluster是MySQL数据库的一个版本,它采用分布式内存架构,将数据分布在多个节点上,以实现数据的冗余和负载均衡。在7.2.8这个版本中,用户...

    MySQL 8.0参考手册 Including MySQL NDB Cluster 8.0

    MySQL NDB Cluster 8.0 是 MySQL 8.0 的一个集群版本,提供了高可用性和高性能的数据库解决方案,适用于高可用性和高性能的应用程序和业务系统。 本手册涵盖了 MySQL 8.0 的所有方面,包括安装、配置、管理、性能...

    linux下MySQL-cluster集群搭建.

    ### Linux 下 MySQL Cluster 集群搭建...对于 Linux 64 位系统,可以直接下载对应的 tar 包,例如:[https://cdn.mysql.com//Downloads/MySQL-Cluster-7.4/mysql-cluster-gpl-7.4.15-linux-glibc2.5-x86_64.tar.gz]...

    【亲测】MySQL-cluster集群搭建 v1.0

    3. 安装 MySQL Cluster:mv mysql-cluster-gpl-7.4.17-linux-glibc2.12-x86_64 mysql /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql chown -R mysql:mysql /usr/local/mysql ...

    MySQL Cluster(MySQL 集群)

    - **数据库版本**:使用的 MySQL 版本为 mysql-cluster-gpl-6.3.20。 MySQL Cluster 支持多种操作系统,包括 Linux、Mac OS X 和 Solaris,同时也有一些用户报告称能够在 FreeBSD 上成功运行,尽管官方尚未正式支持...

    mysql-cluster操作文档

    MySQL Cluster是MySQL数据库的一种高可用性和高性能的集群方案,主要适用于大型应用。它支持自动分区,可以在多个物理服务器上存储数据,实现分布式存储和负载均衡,提高数据处理能力,同时保证故障时的自动故障转移...

    MySQL Cluster NDB 7.3 and MySQL Cluster NDB 7.4 官方说明翻译

    MySQL Cluster NDB 7.3 和 7.4 是 MySQL 分布式数据库集群的重要版本,提供了高可用性和数据冗余的解决方案。MySQL Cluster 使用 NDB 存储引擎(也称为 NDB 引擎),允许多台计算机以集群方式协同工作,以实现数据的...

    mysql集群7.1.29配置文档linux

    mysqld --ndbcluster --config /var/lib/mysql-cluster/config.ini ``` 如果启动过程中出现错误提示,可以尝试手动杀死MySQL的进程后重新启动。 #### 验证 在其中一个SQL节点上创建一个数据库,并建立一个测试表...

    MySQL NDB集群部署与维护

    - 安装NDB集群软件:在数据节点安装mysql-cluster-community-data-node,在SQL节点安装mysql-common、mysql-cluster-community-client、mysql-cluster-community-server、mysql-client和mysql-server,在管理节点...

    搭建mysql-cluster集群.docx

    通常,SQL节点是使用命令“mysqld –ndbcluster”启动的,或将“ndbcluster”添加到“my.cnf”后使用“mysqld”启动。 数据更新机制 MySQL Cluster的数据更新使用读已提交隔离级别(read-committed isolation)来...

Global site tag (gtag.js) - Google Analytics