MySQL HA方案和企业版功能介绍

      MySQL HA方案和企业版功能介绍

 

         最近,笔者有幸参与了xx局的mysql数据库HA搭建,并和mysql原厂的代理商进行了产品和技术方面的交流。

         我就把这次项目中学到的东西简单的和大家分享一下。

1 MySQL常用HA方案

         第一种:MySQL双机主从复制方案 异步

         MySQL的双机主从复制方案,是异步进行的。也就是说master数据库并不关心binlog是否传输到slave数据库,master是一直向前进行数据更新的。这样就会出现slave数据库的数据落后于master数据库的情况。

在网络吞吐量比较大时,如果master数据库意外宕机,就会出现master的部分binlog没来及传输给slave数据库,从而造成slave数据库和master数据不一致的情况。如果你的业务允许丢失微量的数据,那么这个方案完全可以满足。如果不容忍这种情况的发生,那么你就需要考虑其他方案了,如选用一些商业软件(譬如爱可生的双机HA软件),或者利用MySQL原生的cluster(免费),再或者需要MySQL DBA手工把差异的数据追平。

9k=

 

        
        
业界商用的双机主从复制方案有MHAkeepalivedPacemakerActiontec HA(商用软件),对比如下:

 


 

注意:上面说到MHA能补偿日志,但是只能补偿一次数据差异。

 

         如果在备库上人为更新数据,然后又在主库上更新了相同的数据,假设更新的表数据有主键约束,那么主库在向从库同步数据时,在从库造成主键冲突。结果从库发生了错误,以后从库就再也不和主库同步了,直到等人工干预解决为止。

 

         第二种:MySQL cluster 同步

Z

 

         MySQL cluster是数据同步复制的完美解决方案,每次事务都是双commit,所以说集群中的各个节点数据是完全一致的,不会出现上面第一种方案脑裂的情况。如果集群中的一个节点坏了,等修复好后,数据会自动同步。

         另外,MySQL cluster属于内存数据库,所以性能也会更高。

         凡事有利必有弊,MySQL cluster也一样。虽然说MySQL cluster可以保证各个节点数据的一致性和性能的优越性。但是集群的数据存储量不能超过集群中所有节点内存之和除以2.5。比如我MySQL cluster5个节点,这五个节点的内存加起来是64G,那么数据存储量不能超过30G64G/2.5~30G)。

         此外,大家也看出了MySQL cluster节点多,比较昂贵,不差钱的公司可以考虑。

         当然,据说mysql-server(注意不是说mysql cluster)从5.5后,开始支持半同步了,如果主库等1秒发现从库还没有同步数据时,那么主库就不等从库了,主库接着业务数据的更新。所以说这个同步算做是伪同步吧。

第三种方案:MySQL+DBRD 双机主备(只针对linux

9k=

         DRBD技术属于块级别复制,其复制速度比通过复制binlog方式(第一种方案)速度快很多,所以DRBD可以最低减少master数据库和slave数据库之间的差异(当然主库和备库之间还是有数据微量延时的,只是比传输binlog的低)。

         另外,DRBD也有缺点,因为它是块级别的复制,所以不能人为的手工干预(binlog方式我们能手工干预)。

 

第四种方案:MySQL+shared Disk 双机主备(利旧)

 

Z

 

         利旧,就是指利用旧的东西,已达到设备的最大利用率。

         大家注意,这个方案和ORACLERAC不一样。这个方案的主备两个节点平时只能一个节点(active)对外提供服务;另外一个节点(passive)的mysql服务是关闭状态的,只有发生故障切换时才启动。

         因为此方案的的数据在共享存储上,所以数据只有一份,没有冗余。

         如果你的公司有很多不用的旧的机器,那么你可以采用这种方案,否则就不要用。

 

第五种:爱可生HA高可用方案(商业软件)

9k=

         该方案是把binlog日志放在共享存储上(共享存储10G大小就够了),这样当master数据库宕机后,slave数据库读取共享存储上的binlog来追平和master数据库的差异,从而保证slave的数据和master宕机时的数据强一致性,做到了零数据丢失。

         该方案是需要向爱可生公司购买该HA软件的。费用大概是4万的样子,具体可向该司销售咨询。

第六种方案
      atlas mysql  
        请自行百度

      2、企业版和社区版MySQL的功能对比

企业版和社区版的MySQL核心功能都一样。但企业版有更多其他功能,是社区版没有的。

         企业版比社区版多的功能有:防火墙、物理备份工具、监控(MEM)、主从复制监控、可以用oracle surport账号向MySQL专家提问、企业版比社区版多线程池(所以企业版性能更高)等。如果你购买的是MySQL企业版(不是社区版),那么上述的功能就都有了。

         我们知道,MySQL的备份方式有mysqldumplvm快照、MySQL Replication、和企业级的物理备份工具。其中mysqldump备份和恢复的速度是上述中最差的。

         经过测试,备份73G的数据,用mysqldump 需要4h 17min,但用MySQL企业版的物理备份工具只需要5.25min,其速度差别尽然是50倍。

         如果还原恢复73G的数据,用mysqldump需要17h 45 min,但用MySQL企业版的物理备份恢复工具,只需要14min。两者的速度真是不可同日而语啊。

         企业版的MySQL两台机器大概是6万多。

         企业版的MySQL cluster大概是14万左右。

         上述两种软件都有开源免费的,可以去MySQL官方下载社区版的。但是企业版的MySQL是在官网下载不到的,需要向原厂付费后,才能获得电子版或者光盘的介质。

3MySQL读写分离方案

         我们说的MySQL负载均衡,其实就是指MySQL的读写分离。

         实现MySQL读写分离的软件有MySQL官方的mysql-proxy、阿里巴巴的amoeba(开源)和爱可生商业版的。

         据说,截止到现在,mysql-proxy只是一个实验室的产品,所以他还并不完善,有很多bug,一般不建议在生产中使用。但相信在2-3年后,mysql-proxy必会成熟的。

         对于阿里系的amoeba,经常会出现cpu100%的问题,还有amoeba不支持事务,不支持存储过程等,所以也不完善。

         另外,爱可生商业版的读写分离软件一个大概8万的样子,具体得需要咨询该司的销售了。

         淘宝有个TDDL读写分配方案,复杂度相对较高。当前公布的文档较少,只开源动态数据源,分表分库部分还未开源,还需要依赖diamond,不推荐使用。

        

最后,本文是笔者根据此项目整理的文档,如有错误请指正。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28916011/viewspace-1719675/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/28916011/viewspace-1719675/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值