这篇文章主要介绍“MySQL集群NDB 7.5有哪些知识点”,在日常操作中,相信很多人在MySQL集群NDB 7.5有哪些知识点问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL集群NDB 7.5有哪些知识点”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
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集群使用心跳和超时机制,当其中一个节点网络无法联通时,会判断这个节点失效。