amoeba高可用mysql_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。比较复杂,团队有人、资源充足,可以考虑尝试,貌似用的人不多。

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

49f4960759f89bbb365ce1d902082070.png

二、部分常见方案的简介

1.Mysql主从架构

81a522f2b46decaa2b4c20a82fbe7233.png

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上。

73277054996344cc1b45153192b03072.png

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好像不靠谱,据说不稳定,但还是有人在用)

39049a5f983a1484e4eabc1e1d2595b0.png

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)

6b5cd030700d84e2c4e5fe29bee35c0a.png

61dcd15f2b8d55f2daf0bca6c59aa1c8.png

客户端解决方案的特点:

优点:

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

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

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

缺点:

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

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

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

中间件解决方案的特点:

优点:

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

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

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

缺点:

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

  2、增加了proxy 性能下降

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

以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家,需要戳这里PHP进阶架构师>>>视频、面试文档免费获取

或 者关注我每天分享技术文章

PHP进阶编程​www.zhihu.com
7414a82baa75187fe69c08772f77fd7e.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Amoeba:分布式数据库Proxy解决方案 随着传统的数据库技术日趋成熟、计算机网络技术的飞速发展和应用范围的扩充,数据库应用 已经普遍建立于计算机网络之上。这时集中式数据库系统表现出它的不足:集中式处理,势必造成性 能瓶颈;应用程序集中在一台计算机上运行,一旦该计算机发生故障,则整个系统受到影响,可靠性 不高;集中式处理引起系统的规模和配置都不够灵活,系统的可扩充性差。在这种形势下,集中式数 据库将向分布式数据库发展。 分布式数据库系统的优点: 1、降低费用。分布式数据库在地理上可以式分布的。其系统的结构符合这种分布的要求。允许用 户在自己的本地录用、查询、维护等操作,实行局部控制,降低通信代价,避免集中式需要更高要求 的硬件设备。而且分布式数据库在单台机器上面数据量较少,其响应速度明显提升。 2、提高系统整体可用性。避免了因为单台数据库的故障而造成全部瘫痪的后果。 3、易于扩展处理能力和系统规模。分布式数据库系统的结构可以很容易地扩展系统,在分布式数 据库中增加一个新的节点,不影响现有系统的正常运行。这种方式比扩大集中式系统要灵活经济。在 集中式系统中扩大系统和系统升级,由于有硬件不兼容和软件改变困难等缺点,升级的代价常常是昂 贵和不可行的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值