想学精MySQL,得先捋一捋高可用架构
作者:mmseoamin日期:2023-12-18

📢📢📢📣📣📣

哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验

一位上进心十足的【大数据领域博主】!😜😜😜

中国DBA联盟(ACDU)成员,目前服务于工业互联网

擅长主流Oracle、MySQL、PG、高斯及Greenplum运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。

✨ 如果有对【数据库】感兴趣的【小可爱】,欢迎关注【IT邦德】💞💞💞

❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️

文章目录

  • 前言
    • 1.主从复制
    • 2.读写分离及负载均衡
    • 3.MHA架构
    • 4.多源复制
    • 5.MGR架构
    • 6.双主+Keepalived
    • 7.PXC架构
    • 8. Orchestrator+VIP架构

      前言

      本文对MySQL的高可用架构做了详细的阐述,均来自真实的企业生产环境

      1.主从复制

      MySQL主从复制是一个异步的复制过程,底层是基于Mysql数据库自带的 二进制日志 功能。就是一台或多台MySQL数据库(slave,即从库)从另一台MySQL数据库(master,即主库)进行日志的复制,然后再解析日志并应用到自身,最终实现 从库的数据和主库的数据保持一致。MySQL主从复制是MySQL数据库自带功能,无需借助第三方工具。

      MySQL 主从复制的优点主要包括以下3个方面:

      (1)如果主库出现问题,可以快速切换到从库提供服务;

      (2)可以在从库上执行查询操作,降低主库的访问压力;

      (3)可以在从库上执行备份,以避免备份期间影响主库的服务

      想学精MySQL,得先捋一捋高可用架构,第1张

      2.读写分离及负载均衡

      MySQL Router 的主要用途是读写分离,主主故障自动切换,负载均衡,连接池等。

      MySQL 强烈建议使用 Router 8 与 MySQL Server8和5.7一起使用,MySQL Router 是 MySQL 官方提供的一个轻量级中间件,可以在应用程序与 MySQL 服务器之间提供透明的路由方式。主要用以解决 MySQL 主从库集群的高可用、负载均衡、易扩展等问题

      1.实现了主从读写分离

      2.读从库一定程度上起到了负载均衡的作用

      3.可以当作连接池

      4.主主架构中,主数据库发生故障后,主从 MySQL 服务器自动发生切换

      5.多从服务器负载读时,其中一台从服务器 DOWN 机,不影响业务访问

      想学精MySQL,得先捋一捋高可用架构,第2张

      3.MHA架构

      MHA(Master High Availability Manager and tools for MySQL)目前在MySQL高可用方面是一个相对成熟的解决方案,它是由youshimaton采用Perl语言编写的一个脚本管理工具。目前MHA主要支持一主多从的架构,要搭建MHA,要求一个复制集群必须最少有3台数据库服务器,一主二从,即一台充当Master,一台充当备用Master,另一台充当从库。

      MHA由两部分组成:MHA Manager(管理节点)和MHA Node(数据库节点),

      MHA Manager 可以单独部署在一台独立的机器上管理多个 master-slave 集群,

      也可以部署在一台 slave 节点上。MHA Node 运行在每台 MySQL 服务器上,

      MHA Manager 会定时探测集群中的 master 节点,

      当 master 出现故障时,它可以自动将最新数据的 slave 提升为新的 master,

      然后将所有其他的 slave 重新指向新的 master。

      整个故障转移过程对应用程序完全透明

      想学精MySQL,得先捋一捋高可用架构,第3张

      4.多源复制

      所谓多源复制(Multi-source Replication),就是多台主库的数据同步到一台从库服务器上,从库创建通往每个主库的管道,从Mysql5.7版本开始支持多主一从的复制方式

      多源复制的应用场景

      1.各个主数据库的数据汇总到统一的数据库中

      2.在从数据库对各个主数据库的数据进行集中备份

      在部署多主一从之前,我们先了解下多源复制的好处:

      (1)可以集中备份,在从库上备份,不会影响线上的数据正常运行;

      (2)节约购买从库服务器的成本,只需要一个从库服务器即可;

      (3)数据汇总在一起,方便后期做数据统计,可用于数仓;

      (4)减轻DBA维护工作量,整合数据资源;

      想学精MySQL,得先捋一捋高可用架构,第4张

      5.MGR架构

      MySQL Group Replication(简称MGR)是一款高可用与高扩展的解决方案,

      它提供了高可用、高扩展、高可靠的MySQL集群服务。既可以很好的保证数据一致性又可以自动切换,具备故障检查功能、支持多节点写入,以插件形式提供,实现了分布式下数据的最终一致性

      (1)强一致性

      基于原生复制及paxos协议的组复制技术,

      并以插件方式提供,提供一致性数据安全。

      (2)高容错性

      只要不是大多数节点环境坏掉就可以继续工作,

      有自动检查机制,当不同节点产生资源争用冲突时,

      不会出现错误,按照先到者优先原则进行处理,并内置自动化脑裂防护机制。

      (3)高扩展性

      节点的新增和移除都是自动的,新节点加入后,

      会自动从其他节点上同步状态,直到新节点和其他节点保持一致,

      如果某节点被移除了,其他节点自动更新组信息,自动维护新的组信息。

      (4)高灵活性

      有单主模式和多主模式,单主模式下会自动选主,

      所有的更新操作都是在主上进行;多主模式下,所有server都可以同时处理更新操作。

      想学精MySQL,得先捋一捋高可用架构,第5张

      6.双主+Keepalived

      一般中小型公司都使用这种架构,搭建比较方便简单;可以采用主从或者主主模式,在 master 节点发生故障后,利用keepalived 高可用机制实现快速切换到 slave 节点。原来的从库变成新的主库

      keepalived主要有三个模块,分别是core、check和vrrp。

      core模块为keepalived的核心,

      负责主进程的启动、维护以及全局配置文件的加载和解析。

      check负责健康检查,包括常见的各种检查方式。

      vrrp模块是来实现VRRP协议的

      想学精MySQL,得先捋一捋高可用架构,第6张

      7.PXC架构

      PXC 是一套 MySQL 高可用集群解决方案,与传统的基于主从复制模式的集群架构相比 PXC 最突出特点就是解决了诟病已久的数据复制延迟问题,基本上可以达到实时同步

      ①实现 mysql 数据库集群架构的高可用性和数据的强一致性。

      ②完成了真正的多节点读写的集群方案。

      ③改善了传统意义上的主从复制延迟问题,基本上达到了实时同步。

      ④新加入的节点可以自动部署,无须提供手动备份,维护起来很方便。

      ⑤由于是多节点写入,所以数据库故障切换很容易。

      想学精MySQL,得先捋一捋高可用架构,第7张

      8. Orchestrator+VIP架构

      Orchestrator是最近非常流行的MySQL复制管理工具,相比较于MHA等常用管理工具,其支持高可用部署,并对故障进行一个完整的探测分析后才会做相应的故障转移,探测更精准、全面

      下图中:Sqlite/MySQL,是Orchestrator的后端存储数据库

      (存储监控的mysql复制实例的相关状态信息),可以选择MySQL,也可以选择SQLite。

      /etc/orchestrator.conf.json是配置文件,Orchestrator启动时读取。

      下面部分是监控的MySQL的实例,以下是搭建的一主两从。

      当然,实际上Orchestrator可以监控成百上千个MySQL复制集群

      想学精MySQL,得先捋一捋高可用架构,第8张

      想学精MySQL,得先捋一捋高可用架构,第9张