前言

高可用架构对于互联网服务基本是标配,无论是应用服务还是数据库服务都需要做到高可用。对于一个系统而言,可能包含很多模块,比如前端应用,缓存,数据库,搜索,消息队列等,每个模块都需要做到高可用,才能保证整个系统的高可用。对于数据库服务而言,高可用可能更复杂,对用户的服务可用,不仅仅是能访问,还需要有正确性保证,因此数据库的高可用方案是一直以来的讨论热点,今天就各种的高可用方案,谈一下个人的一些看法,如有错误,还请指正!!

MySQL主从架构

此种架构,一般初创企业比较常用,也便于后面步步的扩展

此架构特点:

1、成本低,布署快速、方便

2、读写分离

3、还能通过及时增加从库来减少读库压力

4、主库单点故障

5、数据一致性问题(同步延迟造成)

MySQL+DRDB架构

通过DRBD基于block块的复制模式,快速进行双主故障切换,很大程度上解决主库单点故障问题

此架构特点:

1、高可用软件可使用Heartbeat,全面负责VIP、数据与DRBD服务的管理

2、主故障后可自动快速切换,并且从库仍然能通过VIP与新主库进行数据同步

3、从库也支持读写分离,可使用中间件或程序实现

MySQL+MHA架构

MHA目前在Mysql高可用方案中应该也是比较成熟和常见的方案,它由日本人开发出来,在mysql故障切换过程中,MHA能做到快速自动切换操作,而且还能最大限度保持数据的一致性

此架构特点:

1、安装布署简单,不影响现有架构

2、自动监控和故障转移

3、保障数据一致性

4、故障切换方式可使用手动或自动多向选择

5、适应范围大(适用任何存储引擎)

MySQL+MMM架构

MMM即Master-Master Replication Manager for MySQL(mysql主主复制管理器),是关于mysql主主复制配置的监控、故障转移和管理的一套可伸缩的脚本套件(在任何时候只有一个节点可以被写入),这个套件也能基于标准的主从配置的任意数量的从服务器进行读负载均衡,所以你可以用它来在一组居于复制的服务器启动虚拟ip,除此之外,它还有实现数据备份、节点之间重新同步功能的脚本。
 MySQL本身没有提供replication failover的解决方案,通过MMM方案能实现服务器的故障转移,从而实现mysql的高可用。

此方案特点:

1、安全、稳定性较高,可扩展性好

2、 对服务器数量要求至少三台及以上

3、 对双主(主从复制性要求较高)

4、 同样可实现读写分离

MySQL Cluster架构

Mysql官方推出的集群高可用方案,由于本人没有用过,不好评价

摘自网络上的一段解释

MySQL Cluster 由一组计算机构成,每台计算机上均运行着多种进程,包括 MySQL服务器,NDB Cluster的数据节点,管理服务器,以及(可能)专门的数据访问程序。 
 由于MySQL Cluster架构复杂,部署费时(通常需要DBA几个小时的时间才能完成搭建),而依靠 MySQL Cluster Manager 只需一个命令即可完成,但 MySQL Cluster Manager 是收费的。并且业内资深人士认为NDB 不适合大多数业务场景,而且有安全问题。因此,使用的人数较少。

最新文章

  1. 【转】正确设置php-fpm子进程用户,提高网站安全性防挂马
  2. 【LAMP】在Debian系linux下安装LAMP
  3. JDE隐藏Constant等(Hide Object)
  4. Java 类的一般特征
  5. GridBagLayout的帮助类
  6. JVM中内存回收深入分析,各种垃圾收集器
  7. pyqt 简单判断指定的内容强度(比如帐号)
  8. Python快捷键
  9. Windows批量添加防火墙例外端口
  10. CSS弹性盒模型(flex box)
  11. Python——day12 nonlcoal关键字、装饰器(开放封闭原则、函数被装饰、最终写法)
  12. [LeetCode] Soup Servings 供应汤
  13. 初识html与css
  14. 在windows下golang安装zmq3小记
  15. CDC工具使用
  16. canvas-3radialGradient.html
  17. Redis介绍及Jedis基础操作
  18. 过滤掉文本中的javascript标签代码
  19. Android应用--QR的生成(二维码)
  20. kafka_zookeeper_配置文件配置

热门文章

  1. jenkins配置Webhook-gitlab
  2. java通过poi读取excel中的日期类型数据或自定义类型日期
  3. UCOSIII内建消息队列
  4. 聊Java中的任务调度的实现方法及比较
  5. event.target事件
  6. js 字符截取 汉字2字符 英文1个字符
  7. 《你们都是魔鬼吗》实验十二 团队作业八:Alpha冲刺
  8. test20190818 NOIP2019 模拟赛
  9. sql:拼接字符串、截取字符串、取字符串长度
  10. Java线程调度方式