`
骑猪逛街666
  • 浏览: 142026 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

10款常见MySQL高可用方案选型解读

 
阅读更多

阅读原文请点击

摘要: 作者介绍 王松磊,现任职于UCloud,从事MySQL数据库内核研发工作。主要负责UCloud云数据库udb的内核故障排查工作以及数据库新特性的研发工作。   一、概述   我们在考虑MySQL数据库的高可用架构时,主要考虑如下几方面:   如果数据库发生了宕机或者意外中断等故障,能尽快恢复数据库的可用性,尽可能的减少停机时间,保证业务不会因为数据库的故障而中断。

作者介绍

王松磊,现任职于UCloud,从事MySQL数据库内核研发工作。主要负责UCloud云数据库udb的内核故障排查工作以及数据库新特性的研发工作。

 

一、概述

 

我们在考虑MySQL数据库的高可用架构时,主要考虑如下几方面:

 

  1. 如果数据库发生了宕机或者意外中断等故障,能尽快恢复数据库的可用性,尽可能的减少停机时间,保证业务不会因为数据库的故障而中断。

  2. 用作备份、只读副本等功能的非主节点的数据应该和主节点的数据实时或者最终保持一致。

  3. 当业务发生数据库切换时,切换前后的数据库内容应当一致,不会因为数据缺失或者数据不一致而影响业务。

 

关于对高可用的分级我们暂不做详细的讨论,这里只讨论常用高可用方案的优缺点以及选型。

 

二、高可用方案

 

1、主从或主主半同步复制

 

使用双节点数据库,搭建单向或者双向的半同步复制。在5.7以后的版本中,由于lossless replication、logical多线程复制等一些列新特性的引入,使得MySQL原生半同步复制更加可靠。

 

常见架构如下:

 

20170323094056168.jpg

 

通常会和Proxy、Keepalived等第三方软件同时使用,即可以用来监控数据库的健康,又可以执行一系列管理命令。如果主库发生故障,切换到备库后仍然可以继续使用数据库。

 

优点:

  • 架构比较简单,使用原生半同步复制作为数据同步的依据

  • 双节点,没有主机宕机后的选主问题,直接切换即可

  • 双节点,需求资源少,部署简单

 

缺点:

  • 完全依赖于半同步复制,如果半同步复制退化为异步复制,数据一致性无法得到保证

  • 需要额外考虑HAProxy、Keepalived的高可用机制

 

2、半同步复制优化

 

半同步复制机制是可靠的。如果半同步复制一直是生效的,那么可以认为数据是一致的。但是由于网络波动等一些客观原因,导致半同步复制发生超时而切换为异步复制,这时便不能保证数据的一致性。所以尽可能的保证半同步复制,就可以提高数据的一致性。

 

该方案同样使用双节点架构,但是在原有半同复制的基础上做了功能上的优化,使半同步复制的机制变得更加可靠。

 

可参考的优化方案如下:

 

   双通道复制

 

20170323094116947.jpg

 

半同步复制由于发生超时后,复制断开,当再次建立起复制时,同时建立两条通道,其中一条半同步复制通道从当前位置开始复制,保证从机知道当前主机执行的进度。另外一条异步复制通道开始追补从机落后的数据。当异步复制通道追赶到半同步复制的起始位置时,恢复半同步复制。

 

   binlog文件服务器

 

20170323094125164.jpg

 

搭建两条半同步复制通道,其中连接文件服务器的半同步通道正常情况下不启用,当主从的半同步复制发生网络问题退化后,启动与文件服务器的半同步复制通道。当主从半同步复制恢复后,关闭与文件服务器的半同步复制通道。

 

优点:

  • 双节点,需求资源少,部署简单

  • 架构简单,没有选主的问题,直接切换即可

  • 相比于原生复制,优化后的半同步复制更能保证数据的一致性

 

缺点:

  • 需要修改内核源码或者使用MySQL通信协议。需要对源码有一定的了解,并能做一定程度的二次开发

  • 依旧依赖于半同步复制,没有从根本上解决数据一致性问题

 

3、高可用架构优化

阅读原文请点击

分享到:
评论

相关推荐

    字节阿里2021核心面试解读.pdf

    - 如何在大厂进行项目实战,包括项目的架构设计、技术选型、高并发和高可用性解决方案等。 10. 职业规划 - 面试结束后,如何进行面试复盘,总结面试经验,以及个人职业发展的规划。 - 职业晋升的路径,比如承担...

    国产数据库的热点技术问题解读.docx

    通过以上内容,我们可以看到选择合适的数据库、适配分布式数据库、确保高可用性、平衡一致性和性能、评估分布式数据库的未来趋势等方面的具体策略和方法。这对于企业和开发者来说都是非常宝贵的经验和指导。

    国产数据库有关的热点问题解读.docx

    控制节点自身具备高可用性;数据节点则需要特别关注。 2. **故障恢复机制**: - **单机数据库主从复制模式**:通过主从复制机制实现故障自动转移。 - **多副本模式**:利用多数派协议保证数据一致性,在出现故障...

    MySQL20个高性能架构设计原则(值得收藏)

    2. **高可用性**:采用高可用解决方案,如主从复制、半同步复制、多源复制(MGR)、MHA、Galera Cluster等,理解各方案优缺点,确保低宕机时间。 3. **表设计**: - 单表数据量控制在3000万以内,避免大字段,不...

    java 高级架构进阶学习

    - **高可用性与高并发**:讲解如何构建高可用系统、负载均衡策略、集群部署、性能调优等。 #### 二、面试真题解析 - **知识点概览**:通过分析近年来Java高级架构面试真题,总结出高频考点和技术趋势。 - **核心...

    Java开发面试必备知识技能总结视频合集

    - **集群管理**:讨论如何利用Zookeeper进行集群管理,保证高可用性。 #### 10. 互联网系统垂直架构之Session解决方案 - **垂直架构概述**:解释垂直架构的概念及其在互联网系统中的应用。 - **Session管理**:...

    美拍后端技术演进

    通过这些知识点的详细解读,我们可以看到美拍后端技术演进的具体路径,从最初的快速验证产品可行性到后续的可扩展和高可用性保证,以及在面对技术瓶颈时的应对策略,这些都是支撑起美拍快速发展的后端技术保障。

    企业数字化运营平台总体技术方案.docx

    - **可用性指标**:如系统上线率、故障恢复时间等。 - **安全性指标**:如数据加密强度、安全漏洞扫描频率等。 #### 1.5 系统质量 - **1.5.1 系统健壮性** - 通过冗余设计和容错机制,确保系统能够在遇到异常情况...

    android开源项目源码,完整商城项目源码(服务端+客户端)

    为了保证服务的高可用性,服务端可能还采用了分布式服务框架,如Dubbo或Spring Cloud。 客户端(ECClient_D)部分,基于Android平台,开发者可能使用了Android Studio作为集成开发环境,编写Java或Kotlin代码。UI...

    jsp106实验室预约管理系统.zip

    本系统以"jsp106实验室预约管理系统.zip"为载体,采用Java编程语言与MySQL数据库进行开发,具备完整的源码,适合毕业设计或课程设计使用,同时也支持远程部署,具有较高的实用性和可扩展性。 一、系统架构与技术...

    基于WEB的网上购物系统 (源码 + 说明文档 + 演示视频)

    此外,还可以研究如何将系统部署到云服务,实现高可用性和弹性伸缩。 总结,这个“基于WEB的网上购物系统”资源包为学习和开发此类系统提供了宝贵的材料,无论你是初学者还是有经验的开发者,都能从中获得启示,...

    微信小程序开发经验不踩过的坑

    ### 微信小程序开发经验与陷阱规避 #### 一、微信小程序概述 ...开发者在进行小程序开发时,应注意用户体验优化、技术选型、安全性以及常见陷阱的规避等方面,以确保小程序的成功上线和稳定运行。

    java ssm党员学习管理系统微信小程序-毕业论文lw.doc

    最后,进行系统测试,优化性能,确保系统的稳定性和可用性。 5. **关键点分析**: - **功能实现**:如学习资源的分类管理,可以让党员根据兴趣或需求选择相应内容;在线考试功能,可实时评估党员的学习效果。 - *...

    武汉市老龄科学研究院网站新闻管理

    - 高可用性,即使在高峰时段也能稳定运行。 - 良好的安全防护机制,防止恶意攻击和数据泄露。 #### 四、系统设计 **1. 软件运行环境设计:** - 操作系统:Windows或Linux服务器版。 - Web服务器:Apache或Nginx。 ...

    数据库课程设计报告-社区人口管理系统报告.doc

    - **用户体验优化**:优化用户体验是提升系统可用性的关键,这不仅包括美观的界面设计,还需要关注操作逻辑的合理性、反馈机制的有效性等方面。 #### 四、需求分析 ##### 4.1 用户需求说明 ###### 4.1.1 数据需求 -...

    streamrpolls-api

    5. **并发与负载均衡**:考虑到实时投票可能带来高并发请求,Streamrpolls-api需要具备良好的并发处理能力,并可能利用负载均衡技术,如Nginx或HAProxy,来分发请求到多台服务器,以提高系统的可用性和响应速度。...

Global site tag (gtag.js) - Google Analytics