zoukankan      html  css  js  c++  java
  • MySQL高可用集群方案

    一、Mysql高可用解决方案

    方案一:共享存储

    一般共享存储采用比较多的是 SAN/NAS 方案。

    方案二:操作系统实时数据块复制

    这个方案的典型场景是 DRBD,DRBD架构(MySQL+DRBD+Heartbeat)

    方案三:主从复制架构

    主从复制(一主多从)

    MMM架构(双主多从)

    MHA架构(多主多从)

    方案四:数据库高可用架构

    这种方式比较经典的案例包括 MGR(MySQL Group Replication)和 Galera 等,最近业内也有一些类似的尝试,如使用一致性协议算法,自研高可用数据库的架构等。

    1.MGR(MySQL Group Replication,MySQL官方开发的一个实现MySQL高可用集群的一个工具。第一个GA版本正式发布于MySQL5.7.17中)

    2.Galera

    其它方案:MySQL Cluster和PXC

    MySQL Cluster(ndb存储引擎,比较复杂,业界并没有大规模使用)

    PXC(Percona XtraDB Cluster)

    如何选择合适的Mysql集群架构?

    MHA看业务规模和需求选择

    mysql官方的Mysql Cluster。比较复杂,团队有人、资源充足,可以考虑尝试,貌似用的人不多。

    小团队或资源不足或小项目直接建议阿里云、腾讯云

     

    二、部分常见方案的简介

    1.Mysql主从架构

    2.MHA 架构(Master High Availability Manager and Toolsfor MySQL)

    参考:生产环境MySQL数据库集群MHA上线实施方案

    MHA(Master High Availability Manager and Toolsfor MySQL)目前在Mysql高可用方面是一个相对成熟的解决方案。它是日本的一位MySQL专家采用Perl语言编写的一个脚本管理工具,该工具仅适用于MySQLReplication 环境,目的在于维持Master主库的高可用性。

    MHA是基于标准的MySQL复制(异步/半同步)。

    MHA是由管理节点(MHA Manager)和数据节点(MHA Node)两部分组成。

    MHA Manager可以单独部署在一台独立机器,也可以部署在一台slave上。

    3.MMM 架构(Master-Master replication manager for Mysql)

    可参考:MySQL-MMM实现MySQL高可用

    MMM,全称为Master-Master replication manager for Mysql,是一套支持双主故障切换和双主日常管理的脚本程序,MMM使用Perl语言开发。主要用来监控和管理MySQL Master-Master(双)复制。特别适合DBA做维护等需要主从复制的场景,通过双主架构避免了重复搭建从库的麻烦。虽然叫做双主复制,但是业务上同一时刻只允许对一个主进行写入,另一台备选主上提供部分读服务,以加速在主主切换时备选主的预热。

    (MMM好像不靠谱,据说不稳定,但还是有人在用)

    MMM优缺点
      优点:高可用性,扩展性好,出现故障自动切换,对于主主同步,在同一时间只提供一台数据库写操作,保证的数据的一致性。
      缺点:Monitor节点是单点,可以结合Keepalived实现高可用。

    4.DRBD 架构(MySQL+DRBD+Heartbeat)

     官网:https://www.linbit.com/en/drbd-community/drbd-download/

     

    三、读写分离解决方案

    • 客户端解决方案(应用层):TDDL、 Sharding-Jdbc (常用shardding-jdbc)
    • 中间件解决方案(代理层):mysql proxy、mycat、altas  (常用mycat)

               

    客户端解决方案的特点:

    优点:

      1、程序自动完成,数据源方便管理

      2、不需要维护,因为没用中间件

      3、理论支持任何数据库 (sql标准)

    缺点:

      1、增加了开发成本、代码有入侵

      2、不能做到动态增加数据源

      3、程序员开发完成,运维参与不了。

    中间件解决方案的特点:

    优点:

      1、数据增加了都程序没用任何影响

      2、应用层(程序)不需要管数据库方面的事情

      3、增加数据源不需要重启程序

    缺点:

      1、程序依赖中间件,导致切换数据库变的困难

      2、增加了proxy 性能下降

      3、增加了维护工作、高可用问题。

    参考:

    浅谈MySQL集群高可用架构

    [干货分享] 一文了解数据库高可用容灾方案的设计与实现

    方案讨论:想问各位大大 MySQL 是怎么做高可用的?

  • 相关阅读:
    Android修改app的图标
    关于Python3中的WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='pypi.org', port=443):
    Android 7.1 虚拟按键(NavigationBar)源码分析 控件加载、属性控制隐藏
    Android5.1 Browser 闪退分析 /data/tombstones
    RootCommand
    RK3288 Linux4.4.143 适配EETI
    Android 7.1 Camera2 拍照镜像分析
    Docker pull slow resolution
    Dockerfile使用OracleJDK创建自定义tomcat8镜像
    centos使用docker安装ActiveMQ
  • 原文地址:https://www.cnblogs.com/rouqinglangzi/p/10921982.html
Copyright © 2011-2022 走看看