博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL集群 NDB 7.5介绍
阅读量:2498 次
发布时间:2019-05-11

本文共 2417 字,大约阅读时间需要 8 分钟。

MySQL Cluster是在shared-nothing系统中开启in-memory数据库集群功能的一项技术。shared-nothing架构可以使系统以廉价的硬件工作,对硬件和软件的需求很小。
MySQL集群被设计成没有任何单点故障。在一套shared-nothing系统中,每个节点都有自己的内存和硬盘,像共享网络、网络问卷系统和SAN存储这些共享存储机制不被MySQL集群推荐和支持。
MySQL集群通过一个称为NDB的内存集群存储引擎,和标准的MySQL服务器集成在一起。NDB是Network DataBase的缩写。MySQL集群是MySQL服务器和NDB存储引擎的结合。
一套MySQL集群包含一系列的电脑主机,每台主机运行一个或多个进程;这些进程被称为节点,包含MySQL服务器(用于访问NDB的数据)、数据节点(用于存储数据)、一个或多个管理服务器、其他定制的数据访问程序。这些节点的关系图如下:
集群中的节点可以被停止或重启,也可以再次加入集群中。
NDBCLUSTER(也称为NDB)是一个提供高可用性和数据永久化的内存存储引擎。
NDBCLUSTER可以通过配置一些参数实现故障切换和负载均衡。需要注意的是,在MySQL集群中,一个节点是指一台主机,而是一个进程;可以在一台主机上运行多个节点。
在一套MySQL集群配置中,至少有三个节点:
管理节点:这个节点的角色是管理集群中的其他节点,提供配置数据,启动停止节点和执行备份功能。因为这个节点管理其他节点的配置信息,在集群中应该首先启动这个节点。通过ndb_mgmd命令启动MGM节点。
数据节点:这种类型的节点存储集群的数据。MySQL集群中的表通常被保存在内存中而不是磁盘上(这是我们称呼MySQL集群为内存数据库的原因)。然而,一些MySQL集群的数据也可以储存在磁盘上。
SQL节点:这各节点用来访问集群数据。在MySQL集群中,SQL节点是使用NDBCLUSTER存储引擎的传统的MySQL服务器。SQL节点通过mysqld --ndbcluster --ndb-connectstring方式启动。
在生产环境中,部署一套三节点的MySQL集群是不现实的,因为这样的配置无法提供冗余保护。想要实现MySQL集群的高可用性,需要部署多个数据节点和SQL节点,管理节点也推荐部署多个。
管理服务器负责管理集群的配置和集群日志。每个集群节点读取管理服务器上面的配置信息。
另外,除了上面这些节点,还有集群客户端进程和应用程序,包括标准的MySQL客户端、NDB特定的API程序和管理客户端。
MySQL集群有两种日志:
集群日志:记录集群的事件报告
节点日志:每个节点的单独日志
通常,只需要检查集群日志即可,只要当开发应用程序或排错时才会用到节点日志检查点,一般来说,当数据被保存到磁盘上时,会触发一个检查点。在MySQL集群中,当被提交的事务数据被保存到磁盘上时,会触发检查点。对于NDB存储引擎,有两种类型的检查点一起工作来确保集群数据的一致性。
本地检查点(LCP):这是单独节点上面的检查点。一个本地检查点会保存本地节点上面的所有数据到磁盘上,每几分钟会触发一次,触发检查点的时间间隔依据节点上面的数据量、集群的活动级别和其他因素而定。
全局检查点(GCP):全局检查点每几秒钟会发生一次,当所有节点上面的事务同步且日志文件被刷新到磁盘上时发生。
一个数据节点是一个ndbd进程,每个数据节点需要部署到不同的主机上,MySQL集群不支持在同一台主机上部署多个ndbd进程。
[root@dongdan ~]# ps -ef|grep ndbd
root     23759     1  0 Aug03 ?        00:00:00 ndbd
root     23760 23759  0 Aug03 ?        00:24:05 ndbd
root     31446 31395  0 13:46 pts/2    00:00:00 grep ndbd
管理节点的进程是ndb_mgmd进程,SQL节点的进程是mysqld进程。
[root@dongdan ~]# ps -ef|grep mysqld
root     23833     1  0 Aug03 ?        00:00:00 /bin/sh /usr/bin/mysqld_safe --defaults-file=/var/lib/mysql/main_my.cnf
mysql    24051 23833  0 Aug03 ?        00:36:04 /usr/sbin/mysqld --defaults-file=/var/lib/mysql/main_my.cnf --basedir=/usr --datadir=/var/lib/mysql/database --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/lib/mysql/database/dongdan.err --pid-file=/var/lib/mysql/database/dongdan.pid --socket=/var/lib/mysql/mysql.sock --port=3306
root     31464 31395  0 13:50 pts/2    00:00:00 grep mysqld
节点组包含一个或多个节点。
MySQL集群使用心跳和超时机制,当其中一个节点网络无法联通时,会判断这个节点失效。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26506993/viewspace-2099896/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/26506993/viewspace-2099896/

你可能感兴趣的文章
动态分区最佳实践(一定要注意实践场景)
查看>>
HIVE—索引、分区和分桶的区别
查看>>
Hive进阶总结(听课总结)
查看>>
大数据领域两大最主流集群管理工具Ambari和Cloudera Manger
查看>>
Sqoop往Hive导入数据实战
查看>>
Mysql到HBase的迁移
查看>>
Sqoop import进阶
查看>>
Hive语句是如何转化成MapReduce任务的
查看>>
Hive创建table报错:Permission denied: user=lenovo, access=WRITE, inode="":suh:supergroup:rwxr-xr-x
查看>>
Hive执行job时return code 2排查
查看>>
hive常用函数及数据结构介绍
查看>>
Hive面试题干货(亲自跟着做了好几遍,会了的话对面试大有好处)
查看>>
力扣题解-230. 二叉搜索树中第K小的元素(递归方法,中序遍历解决)
查看>>
力扣题解-123. 买卖股票的最佳时机 III(动态规划)
查看>>
Django 源码阅读:服务启动(wsgi)
查看>>
Django 源码阅读:url解析
查看>>
Docker面试题(一)
查看>>
第一轮面试题
查看>>
2020-11-18
查看>>
Docker面试题(二)
查看>>