MySQL高可用

技术加油站MySQL高可用mysqlMGRMHAMMM半同步复制大约 2 分钟

单节点

  • 优点
    1. 结构简单,使用方便
  • 缺点
    1. 存在单点故障问题
    2. 存在读写性能问题
    3. 大数据量情况存在性能问题

主从架构

  1. 一主多从(主从架构)
  2. 多主多从(主从架构)

无论是一主多从还是多主多从,可以分散读写压力,但单个节点仍然是保存的是整个数据库完整的数据,所以不能解决海量数据存储问题

  • 优点
    1. 一定程度上可以分散读写压力问题
  • 缺点
    1. 仍然不能解决海量数据存储问题
    2. 可能存在主从数据不一致问题(比如采用异步复制方案)
    3. 可能存在数据丢失问题

主从复制方案

  1. 异步复制

    1. 存在数据延迟问题
    2. 主从数据可能丢失,导致数据不一致
    Untitled
    Untitled
  2. 半同步复制

    1. 相比异步复制,减少了数据丢失的概率,但仍有可能出现(因为如果从库长时间没有返回ack,就会采用异步复制方案)
    2. 一定程度上解决了数据延迟问题
    3. 可以配合MHA实现mysql高可用
    Untitled
    Untitled

    扩展阅读:https://dev.mysql.com/doc/refman/8.0/en/group-replication-primary-secondary-replication.htmlopen in new window

  3. 组复制(MGR)

    1. 组内节点采用paxos共识算法通信
    2. 节点间数据强一致性
    3. 有两种模式:单主模式、多主模式
    4. 是一种高可用方案
    5. 至少3个节点(paxos算法决定)
    Untitled
    Untitled

    扩展阅读:https://dev.mysql.com/doc/refman/8.0/en/group-replication-summary.htmlopen in new window

    扩展阅读:https://zhuanlan.zhihu.com/p/567939774open in new window

高可用架构

  1. MMM (Google开发,社区不活跃,不再维护,基本不用了)
  2. MHA + 半同步复制(还是比较成熟,但也有3、4年没有更新MHA了)
  3. MGR (推荐mysql8.0及以上版本使用)
  4. K8S+MGR
  5. MySQL NDB Cluster (NDB: network database)
  6. MySQL InnoDB Clusteropen in new window

扩展阅读:MySQL 8.0.30,一个值得上车MGR的版本open in new window

扩展阅读:k8s安装MySQL MGR集群open in new window

扩展阅读:https://helm.sh/zh/open in new window (k8s应用市场)

扩展阅读:RadonDBopen in new window (最后更新时间:2022-08-25)

扩展阅读:美团数据库高可用架构的演进与设想open in new window

数据分片+高可用

异地备份

异地多活









  • 随机毒鸡汤:上学时一个人的力气如壮牛,那是因为他,拖了全班人的后腿。