开发者学堂课程【MySQL 企业常见架构与调优经验分享:MYSQL 常见应用架构经验分享】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/383/detail/4814
MYSQL 常见应用架构经验分享(二)
内容简介
一、 MYSQL 常见的应用架构分享
1、Heartbeat/SAN 高可用解决方案
2、Heartbeat/DRBD 高可用解决方案
一、 MYSQL 常见的应用架构分享
1、Heartbeat/SAN 高可用解决方案(最传统)
在这个方案中,处理 fail over 的方式是高可用集群软件 Heartbeat ,它监控和管理各个节点间连接的网络,并监控集群服务,当节点出现故障或者服务不可用时,自动在其他节点启动集群服务。
在数据共享方面,通过 SAN ( Storage Are a Network ) 存储来共享数据。
这种方案可以实现 99.990% 的 SLA 。
原理:平时就一个 MySQL ,一个主一个备。我们这块叫主备,他不是一个主从的关系。主备呢,他其实是一个严格的,一个主,一个备。正常的情况下它是从前端的 MySQL 的主去读这个数据,那么他这个主的数据挂的是共享磁盘所以它会去根据共享磁盘去读数。
那么这是正常情况下,不正常情况 MySQL 主出现故障之后呢,那第二步就是要解决的是故障之后 Heartbeat 这个监控,他会第一时间发现,发现了之后呢,会把集群的这个资源,也就是 VIP从MySQL 主自动切换到 MySQL 从那么第二个要完成的任务,它会把 MySQL 主之前挂的共享磁盘自动卸载,然后他会让 MySQL 自动去挂载共享磁盘,然后继续对位外提供服务。
这个方式呢,他的一个好处在这个可用性方面是比较好的,因为他使用的是共享存储,所以他数据同步效率就不存在了。因为都是挂载的是一块盘。当然这块也还存在一种脑力现象。
他没有把磁盘卸载掉,而这个时候 MySQL 备变成主之后,他又把这个磁盘给挂载上了,那么这个时候就出现了一个共享磁盘被两个机同时挂载的情况,那么这个时候都进行读写的话。那么这个文件系统就完蛋了。
这个就号称脑力问题,那么解决这个脑力问题有个比较成型的方案。比如我们用一些分磁盘设备,避免事情发生。那么最常见的就是在 Heartbeat 这一集训软件里,我们调用了系统本身的分磁设备。
2、Heartbeat/DRBD 高可用解决方案
DRBD 这个模块主要功能他其实叫一个网络镜像器,什么叫网络镜像器呢,实际上就是我们在两台机器上有两块独立的磁盘,或者说磁盘分区也可以。通过 DRBD 这个设备它可以把这个一个网络上的 A 主机的一个磁盘的数据实时的同步到B磁盘。那么就是通过这个 DRBD 软件去实现的。
那么具体是怎么实现的。如上图所示。这个两块磁盘是独立的不是一块共享设备,那么两块磁盘,比如说磁盘1和一个磁盘1的镜像,他们之间是通过 DRBD 这么一个开源软件去实现数据的同步。那么这样的话其实数据有两份,而不像 SAN 一样,数据只有一份,这是通过 DRBD 实现数据,他们前端都是一样的,那么正常情况下 MySQL 主去提供服务,他用自身的磁盘1去取数据,然后做一个读写操作那么当 MySQL1 出现异常的情况下,那当然也是 Heartbeat 去实现监控,他监控到这个 MySQL1 有故障之后呢,做一个集群的资源切换。这个时候集群的资源其实有两个,第一个资源其实是我们所说的 VIP 漂移 IP 地址,首先它会把这个 VIP 地址从这个 MySQL 主然后转到 MySQL 备这样一个机器上来,这是第一个。
另外一个就是关于把这个磁盘这个,就是他会把这个 MySQL 主的磁盘分区给卸载,然后他会在 MySQL 备机上,把这个磁盘给挂载,因为熟悉这个的都知道,就是 DRBD 两块磁盘之间进行同步的话,正常来说,这个磁盘1是主的话,它是可以挂载的,也可以读写的。
正常情况下镜像1他也可以挂载,但是这个磁盘分区不能进行读写操作的。这是它的一个不太好的地方。如果他也能实现读写操作的话,那么他这个结果就非常完美了。
那么 DRBD 不能实现两个镜像磁盘可以同时读写的,那么这块也就保证了我们数据的一致性。那么当这个架构从 MySQL 主切到 MySQL 备之后呢,他要做的一个工作就是把这个主的磁盘给卸载。或者说把这个主的写操作给关闭,在备机上,它会把这个磁盘给挂载上,然后实现读写操作,这个看似操作比较复杂,,其实实际操作比较简单。
正常情况下所有业务都是通过 MySQL 主提供操作的,MySQL 主呢在这就是这个磁盘1,我们仅仅通过 DRBD 把数据同步到这个镜像磁盘的,而镜像磁盘是不提供服务的。
所以这块不存在两个之间性能的差别。但是可能有一点,如果说这个磁盘1这个数据的写比较频繁,那么 DRBD 他对数据的同步也会比较频繁,那么若说网络数据比较频繁,对网络要求就比较高了。
此方案处理 fail over 的方式上依旧采用 Heartbeat ,不同的是,在数据共享方面,采用了基于块级别的数据同步软件 DRBD 来实现。
DRBD 是一个用软件实现的、无共享的、服务器之间镜像块设备内容的存储复制解决方案。和 SAN 网络不同,它并不共享存储,而是通过服务器之间的网络复制数据。