学习
实践
活动
工具
TVP
写文章

MySQL高可用架构对比分析

1、概述

MySQL是一个非常好的开源数据库,它的历史最早可以追溯到1979年,详细历史就不在这里介绍了。自从越来越多的行业客户用上MySQL来跑生产,MySQL高可用的问题就凸显出来的,在传统商业数据库解决方案中,Informix的HDR、IBM Db2的HADR、Oracle的Dataguard都能保证有一个物理上数据分布相同的热备的功能,而MySQL却没有这种解决方案。 但是MySQL的开放性给出了无限的可能性。

2、市面上常用的解决方案

2.1 官方的异步与半同步方案

2.1.1 异步复制方案

官方的解决方案最大的优点就是结构简单、方便搭建;缺点很明显,同步的时候丢数据的概率非常高,如果在同步的时候主库挂掉,没办法保证备库的一致性。单个事务的同步如下图所示:

2.1.2 半同步复制方案

针对以上缺点,官方又推出了一个半同步的方案,进一步降低的同步过程中丢数据的概率,但是在某些情况下仍然存在丢数据的可能性。如下图所示:

2.2 MySQL集群方案

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

2.3 MySQL+DRBD方案

DRBD是应用级别的磁盘IO同步工具,Linux新版本内核提供了一个钩子,每一次IO都通知到DRBD,然后DRBD将该IO同步至备机,并且返回ACK,主机才会认为该IO操作完成。所以MySQL+DRBD的方案优点就是数据可以保证完全的一致,缺点则是牺牲了MySQL的扩展性以及极大的降低了磁盘IO的性能。

2.4 Mariadb Galera Cluster方案

Mariadb是MySQL的一个变种,由原MySQL之父主导的项目。官方介绍这种方案是完全的同步复制多主方案,好处就是能够完全保证数据的一致性,坏处就是整个集群的性能受限于性能最差的节点。同时该解决方案在国内还较少,支持力度有限。

3、总结和思考

MySQL的无法提供一个适合所有场景的高可用方案,需要结合不同的应用场景和应用习惯来选择合适的高可用方案。

针对强一致性而又需要保留一定扩展性的应用场景,暂时还没找到合适的高可用解决方案。

参考资料

Primary-Secondary Replication

What is MariaDB Galera Cluster

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180927G14A9S00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

同媒体快讯

扫码关注腾讯云开发者

领取腾讯云代金券