阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

MySQL 数据库的高可用性分析

402次阅读
没有评论

共计 3134 个字符,预计需要花费 8 分钟才能阅读完成。

MySQL 数据库是目前开源应用最大的关系型数据库,有海量的应用将数据存储在 MySQL 数据库中。存储数据的安全性和可靠性是生产数据库的关注重点。本文分析了目前采用较多的保障 MySQL 可用性方案。

MySQL Replication

MySQL Replication 是 MySQL 官方提供的主从同步方案,用于将一个 MySQL 实例的数据,同步到另一个实例中。Replication 为保证数据安全做了重要的保证,也是现在运用最广的 MySQL 容灾方案。Replication 用两个或以上的实例搭建了 MySQL 主从复制集群,提供单点写入,多点读取的服务,实现了读的 scale out。
MySQL 数据库的高可用性分析
图 1. MySQL Replication 主从复制集群

如图一所示,一个主实例(M),三个从实例(S),通过 replication,Master 生成 event 的 binlog,然后发给 slave,Slave 将 event 写入 relaylog,然后将其提交到自身数据库中,实现主从数据同步。对于数据库之上的业务层来说,基于 MySQL 的主从复制集群,单点写入 Master,在 event 同步到 Slave 后,读逻辑可以从任何一个 Slave 读取数据,以读写分离的方式,大大降低 Master 的运行负载,同时提升了 Slave 的资源利用。

对于高可用来说,MySQL Replication 有个重要的缺陷:数据复制的时延。在通常情况下,MySQL Replication 数据复制是异步的,即是 MySQL 写 binlog 后,发送给 Slave 并不等待 Slave 返回确认收到,本地事务就提交了。一旦出现网络延迟或中断,数据延迟发送到 Slave 侧,主从数据就会出现不一致。在这个阶段中,Master 一旦宕机,未发送到 Slave 的数据就丢失了,无法做到数据的高可用。

为了解决这个问题,google 提供了解决方案:半同步和同步复制。在数据异步复制的基础之上,做了一点修改。半同步复制是 Master 等待 event 写入 Slave 的 relay 后,再提交本地,保证 Slave 一定收到了需要同步的数据。同步复制不不仅是要求 Slave 收到数据,还要求 Slave 将数据 commit 到数据库中,从而保证每次的数据写入,主从数据都是一致的。

基于半同步和同步复制,MySQL Replication 的高可用得到了质的提升,特别是同步复制。基于同步复制的 MySQL Replication 集群,每个实例读取的数据都是一致的,不会存在 Slave 幻读。同时,Master 宕机后,应用程序切换到任何一个 Slave 都可以保证读写数据的一致性。但是,同步复制带来了重大的性能下降,这里需要做一个折衷。另外,MySQL Replication 的主从切换需要人工介入判断,同时需要 Slave 的 replaylog 提交完毕,故障恢复时间会比较长。

MySQL Fabric

MySQL Fabric 是 MySQL 社区提供的管理多个 MySQL 服务的扩展。高可用是它设计的主要特性之一。

Fabric 将两个及以上的 MySQL 实例划分为一个 HA Group。其中的一个是主,其余的都是从。HA Group 保证访问指定 HA Group 的数据总是可用的。其基础的数据复制是基于 MySQL Replication,然后,Fabric 提供了更多的特性:

失效检测和恢复:Fabric 监控 HA Group 中的主实例,一旦发现主实例失效,Fabric 会从 HA Group 中剩余的从实例中选择一个,并将其提升为主实例。

读写均衡:Fabric 可以自动的处理一个 HA Group 的读写操作,将写操作发送给主实例,而读请求在多个从实例之间做负载均衡。
MySQL 数据库的高可用性分析
图 2. Fabric

MHA

MHA(MySQL-master-ha)是目前广泛使用的 MySQL 主从复制的高可用方案。MHA 设计目标是自动实现主实例宕机后,从机切换为主,并尽量降低切换时延(通常在 10-30s 内切换完成)。同时,由 MHA 保证在切换过程中的数据一致性。MHA 对 MySQL 的主从复制集群非常友好,没有对集群做任何侵入性的修改。

MHA 的一个重点特性是:在主实例宕机后,MHA 可以自动的判断主从复制集群中哪个从实例的 relaylog 是最新的,并将最新从实例的差异 log“应用”到其余的从实例中,从而保证每个实例的数据一致。通常情况下,MHA 需要 10s 左右检测主实例异常,并将主实例关闭从而避免脑裂。然后再用 10s 左右将差异的 log event 同步,并启用新的 Master。整个 MHA 的 RTO 时间大约在 30s。

MySQL Cluster

MySQL Cluster 是一个高度可扩展的,兼容 ACID 事务的实时数据库,基于分布式架构不存在单点故障,MySQL Cluster 支持自动水平扩容,并能做自动的读写负载均衡。

MySQL Cluster 使用了一个叫 NDB 的内存存储引擎来整合多个 MySQL 实例,提供一个统一的服务集群。如图三所示。
MySQL 数据库的高可用性分析
图 3. MySQL Cluster 组成

MySQL Cluster 由 SQL Nodes,DataNodes,和 NDB Management Server 组成。SQL Nodes 是应用程序的接口,像普通的 mysqld 服务一样,接受用户的 SQL 输入,执行并返回结果。Data Nodes 是数据存储节点,NDB Management Server 用来管理集群中的每个 node。

MySQL Cluster 采用了新的数据分片和容错的方式来实现数据安全和高可用。其由 Partition,Replica,Data Node,Node Group 构成。

Partition:NDB 一张表的一个数据分片,包含一张表的一部分数据。

Replica:一个 Partition 的拷贝。一个 Partition 可以有一个或多个 Replica,一个 Partition 的所有 Replica 数据都是一致的。

Data Node:Replica 的存储载体,每个 Node 存储一个或多个 Replica。

Node Group:一个 Data Node 的集合。
MySQL 数据库的高可用性分析
图 4. MySQL Cluster 数据高可用

一个 MySQL Cluster 有 4 个 Node,被分为了两个 Grou。Node1 和 2 归属于 Group0,Node3 和 4 归属于 Group1,。有一张表被分为 4 个 Partition,并分别有两个 Replica。Partition0 和 Partition2 的两个 Replica,分别存储在 Node1 和 Node2 上,Pratition1 和 Partition3 的两个 Replica 分别存在 Node3 和 Node4 上。这样,对于一张表的一个 Partition 来说,在整个集群有两份数据,并分布在两个独立的 Node 上,实现了数据容灾。同时,每次对一个 Partition 的写操作,都会在两个 Replica 上呈现,如果 Primary Replica 异常,那么 Backup Replica 可以立即提供服务,实现数据的高可用。

小结

本文分析了目前 MySQL 使用较多的几种 MySQL 数据复制和高可用方案,从使用来看,MySQL Replication 是使用最为广泛的数据复制方案,因为是 MySQL 原生支持,针对其在不同场景下的一些缺陷,衍生出了半同步复制,强同步复制等数据高可用的方案。在此基础之上,为了运维方便,MySQL Fabric 和 MHA 应运而生,从不同的方向解决了主从切换时数据一致性问题和流程自动化的问题。此外,随着分布式系统架构和方案的逐步成熟。MySQL Cluster 设计了全新的分布式架构,采用多副本,Sharding 等特性,支持水平扩展,做到了 5 个 9 的数据库服务质量保证。

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2016-11/137591.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计3134字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19348
评论数
4
阅读量
7798817
文章搜索
热门文章
开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南 大家好,我是星哥。之前介绍了腾讯云的 Code...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板 1Panel:小白轻松构建 Web 服务与面板加固指南 哈喽,我是星哥,经常有人问我不...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
终于收到了以女儿为原型打印的3D玩偶了

终于收到了以女儿为原型打印的3D玩偶了

终于收到了以女儿为原型打印的 3D 玩偶了 前些日子参加某网站活动,获得一次实物 3D 打印的机会,于是从众多...
【开源神器】微信公众号内容单篇、批量下载软件

【开源神器】微信公众号内容单篇、批量下载软件

【开源神器】微信公众号内容单篇、批量下载软件 大家好,我是星哥,很多人都希望能高效地保存微信公众号的文章,用于...
还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手! 前言 对于个人开发者、建站新手或是想搭建测试站点的从业者...
150元打造低成本NAS小钢炮,捡一块3865U工控板

150元打造低成本NAS小钢炮,捡一块3865U工控板

150 元打造低成本 NAS 小钢炮,捡一块 3865U 工控板 一块二手的熊猫 B3 工控板 3865U,搭...
星哥带你玩飞牛NAS-4:飞牛NAS安装istore旁路由,家庭网络升级的最佳实践

星哥带你玩飞牛NAS-4:飞牛NAS安装istore旁路由,家庭网络升级的最佳实践

星哥带你玩飞牛 NAS-4:飞牛 NAS 安装 istore 旁路由,家庭网络升级的最佳实践 开始 大家好我是...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级 大家好,我是星哥,之前写了一篇文章 自己手撸一...
150元打造低成本NAS小钢炮,捡一块3865U工控板

150元打造低成本NAS小钢炮,捡一块3865U工控板

150 元打造低成本 NAS 小钢炮,捡一块 3865U 工控板 一块二手的熊猫 B3 工控板 3865U,搭...
把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地 大家好,我是星哥,今天教大家在飞牛 NA...
浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍 前言 在 AI 自动化快速发展的当下,浏览器早已不再只是...
星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

  星哥带你玩飞牛 NAS-16:飞牛云 NAS 换桌面,fndesk 图标管理神器上线! 引言 哈...