11月26日下午2点,数据技术嘉年华ONLINE第四期如期而至。万里数据库开源生态负责人叶金荣老师受邀发表《MySQ高可用演进及实践》主题演讲,与人大金仓、南大通用、中兴、云和恩墨等业内知名的国产数据库技术专家同台论道,畅谈数据库领域的技术成果与应用实践。
图
数据技术嘉年华ONLINE第四期
数次跃升迭代MySQL高可用发展史悉数呈现叶老师表示,数据库的高可用主要面临两方面挑战:一是如何提升RPO数据一致性,即在做高可用切换的时候,如何尽可能地保证不丢数据或少丢数据;二是如何保障服务连续性,提高RTO指标。换句话说,在发生主从切换过程中,如何降低服务不可用的时间。
纵观整个MySQL发展史,高可用的发展大致可分为4个阶段:
一、远古阶段:原始主从复制架构基本是MySQL5.5之前的版本,当时主要是基于异步复制的解决方案。在互联网发展早期阶段,绝大多数是高可用+读写分离方案,常见的架构方案一般是一主一从或一主多从。
这个阶段不仅存在异步复制的问题,主从复制一定会存在延迟。并且,数据的一致性无法保障,没有高可用的切换机制,需要通过自行写脚本等方式实现。此外,从节点的单线程,事务、主键等问题也容易造成复制延迟,可读性较差。
二、古代阶段:MHA组件/工具
这个阶段,出现了MHA这样的工具,可以利用MHA配合异步复制,实现对整个主从复制架构的高可用管理。当出现意外时,会把某个从节点提升成新的主节点,然后MHA会在切换前尝试数据补录,之后再完成主从切换,尽可能地实现RPO=0,降低RTO,基本上可以保障99.99%的可用性,数据丢失最少。
这个阶段存在的问题是对5.7版本后的并复制持不好,基本上是废弃状态,需要自行开发切换脚本,并且需要构建ssh信任,存在一定的安全隐患。此外,项目已经处于不更新的状态,目前不太建议再用MHA解决方案了。
三、近代阶段:半同步复制工具
MySQL5.6版本以后,引入了GTID、binlogserver、半同步复制等特性,尤其引入了新选项slave-rows-search-algorithms,对主键的表持更友好。并且还引了增强半同步,通过半同步线程独减少瓶颈点,主库group