MySQL Cluster

2018-06-17 23:58:01来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

Cluster简单来说,就是一组“节点”,节点是一个逻辑概念,一台计算机可以代表一个节点,也可以代表多个节点,这些节点的功能有所不同,有的节点是用来存放数据的(数据节点),存放数据表结构的(sql节点),有的用来对其他节点进行管理(管理节点),这些节点组合在一起,可以为应用提供高可用、高性能和可缩放的Cluster数据管理。

MySQL使用NDB存储引擎来对数据节点进行存储。理论上,MySQL Cluster通过数据的分布式存储和可扩展的系统架构,满足更大规模的应用,而且通过冗余策略,大大提高了系统的可靠性和数据的有效性。

1.MySQL Cluster架构

MySQL Cluster按照节点类型分为3部分

管理节点

用来对其他的节点进行管理,实际操作中,通过一个叫做config.ini的配置文件进行维护而起到管理作用,该文件可以用来配置有多少需要维护的副本、需要在每个数据节点上为数据和索引分配多少内存、数据节点的位置,在每个数据节点上保存数据的磁盘位置,sql节点的位置等信息。管理节点只能有一个,配置要求不高。

sql节点

可以理解为和应用和数据节点之间的一个桥梁,应用不能直接访问数据节点,只能先访问sql节点,然后sql节点再去访问数据节点返回数据,cluster中可以有多个sql节点,通常来说,sql节点越多分配到每个的负载就越小。

数据节点

用来存放cluster中的数据,可以有多个数据节点,每个数据节点可以有多个镜像节点,任何一个放生故障,只要镜像节点正常,cluster就能正常运行。

MySQL Cluster的访问过程:

前台应用一定的负载均衡算法将对数据库的访问分散到不同的sql节点上,然后sql节点对数据节点进行数据访问并从数据节点返回结果,最后sql节点将受到的结果返回给前台应用。而管理节点并不参与访问过程,它只用来对sql节点和数据节点进行配置管理。

 

1.1 MySQL Cluster配置

管理节点配置,示例说明

1.在服务器192.168.7.187的/home/zzx2/下创建目录mysql-cluster文件夹,并且创建配置文件config.ini

mkdir /home/zzx2/mysql-cluster
cd /home/zzx2/mysql-cluster
touch config.ini

其中config.ini的配置如下

[NDBD DEFAULT]
NoOfReplicas=1                                #每个数据节点的镜像
DataMemory=500M                          #每个数据节点中给数据分配的内存
IndexMemory=300M                         #每个数据节点给索引分配的内存
[TCP DEFAULT]
portnumber=2202                          #数据节点的默认连接端口
[NDB_MGMD]
id=1
hostname=192.168.7.187
datadir=/home/zzx2/mysql-cluster
[NDBD]
id=2
hostname=192.168.7.187
datadir=/home/zzx2/mysql/data
[NDBD]
id=3
hostname=192.168.7.55
datadir=/home/zzx2/mysql/data

[MYSQLD]
hostname=192.168.7.187
[MYSQLD]
hostname=192.168.7.55
[MYSQLD]# Options for mysqld process;

 

[NDB_MGMD]  表示管理节点的配置,只能有一个

[NDBD DEFAULT]  表示每个数据节点的默认配置,只有一个

[NDBD]  每个数据节点的配置,有多个

[MYSQLD]  表示SQL的配置,有多个,分别写上不同的SQL的IP地址

 

SQL节点的配置

只需要在MySQL的配置文件,my.cnf中增加

#Options for mysqld process:
[MYSQLD]
ndbcluster                                # 运行NDB的存储引擎
ndb-connectstring=192.168.7.187           # 定位管理节点
#Options for ndbd procsess:
[MYSQL_CLUSTER]
ndb-connectstring=192.168.7.187

 

 

2. 使用Cluster

2.1.Cluster的启动

节点的启动顺序:管理节点--数据节点--SQL节点

ndb_mgmd 是cluster的管理服务器

ndbd进程:是使用NDB储存引擎处理表中数据的进程,通过该进程,存储节点能够实现分布式事务管理,节点恢复,在线备份。

ndb_mgm工具: 在节点全部启动成功后,可以用show命令来查看集群的状态。

 

2.2.Cluster的测试

NDB存储引擎的测试

Cluster只能使用NDB存储引擎表,

在任意一个SQL节点的test库中创建测试表,设置存储引擎为NDB

在另外一个SQL节点中查询测试表

将测试表的存储引擎改为MyISAM,在此插入

再次查询发现无法查询

 

单点故障测试

任何一种节点,都存在单点故障的可能性,在Cluster的设置中,应该尽量对每一类节点设置冗余。对于管理节点,一般不需要特殊配置,只需要将管理工具和配置文件放在多台主机上。

SQL节点故障并不会引起数据查询故障

数据节点的故障的影响取决于数据的存储是相互镜像还是一份数据分成几块存储。

 

2.3.Cluster的关闭

关闭命令:ndb_mgm -e shutdown

注意的是:SQL节点关闭后,MySQL服务并不会停止。

 

3. 维护Cluster

3.1.数据备份

方法1:使用mysqldump工具,

方法2:cluster的物理备份方法,启动管理服务器(ndb_mgm),执行“start backup”,

备份的数据保存在每个数据节点下,

对于大数据量的备份,MySQL cluster提供了几个备份的参数可供调整:

backdatabuffersize: 将数据写入磁盘之前用于对数据进行缓冲处理的内存量。

backlogbuffersize: 将日志记录写入磁盘前对其进行缓冲处理的内存量

backupmemory: 将数据库节点只为备份分配的总内存。

 

3.2.数据恢复

对于用“start backup”进行备份的cluster,必须使用ndb_restore工具进行数据恢复,shell命令如下:

ndb_restore -b 3 -n 2 -c host=192.168.7.187:1186 -m -r /home/zzx2/mysql/data/backup/backup-3

 

命令行各参数的意义:

参数 说明
-b 备份id
-n 节点id
-m 恢复表定义
-r 恢复路径
-c cluster管理器连接串

 

 

 

 

 

 

3.3.日志管理

MySQL提供了两种日志,分别是集群日志和节点日志,前者提供了所有的Cluster节点生成的日志,后者仅仅记录了数据节点的本地事件。

可以使用ndb_mgm客户端工具打开或者关闭日志。

在shell中执行ndb_mgm命令;执行clusterlog info命令查看当前日志状态;当前日志是打开的,用clusterlog off关闭,在此查看用哪个clusterlog on打开。

Cluster的日志类型有很多,可以按照下面的类别进行过滤:

1.Category(类别),可以是以下值:startup,shutdown,checkpoint,noderestart,connection,error等

2.Prior(优先级),有1~15表示,1最重要,每种category都有一个默认的优先级阈值,达到阈值会被记录

3.Severity Level(严重级别),可以使以下值之一,alert,critical,error,warning,info或debug

过滤的方法可以使用ndb_mgm工具完成。

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:修改mysql允许主机访问的权限

下一篇:mysql远程连接失败的两种解决方法