MySQL 主从原理,基于快速学习一门技术的 3 种方式
根据经验,想要快速学习一门技术有 3 种方式。
第一种方式是通过代码来理解它的实现,反推它的逻辑。
这种方式的难度很大,而且起点相对高,能够沉浸其中的人非常少,过程相对来说是苦闷的,但如果能够沉下心来看代码和调试,达到一定程度后,就会逐渐对这门技术有感觉,进而融会贯通。
第二种方式是通过对比的方式来学习。
比如,在有 Oracle 基础的情况下,通过对比 Oracle 学习 MySQL,就会容易很多。越是深入学习,越是能发现两者之间有很大的差别,进而可以通过不断对比来完善自己的认知,从差异化中找到学习的重点和方向,也能够对技术的发展有一个相对理性的认识。
第三种方式算是捷径,就是去听听作者怎么说,通过他的分享从整体对一个项目有一个基本的认识和了解。
这好比你去拜访一个朋友,他热情地把你领进门,带着你走走客厅,走走卧室,给你介绍房子的装修风格、里面的家具和电器,为什么要这么设计,很快你就能够对这一切熟悉起来。这种方式很好,而且最省事,但可遇不可求。
继续以学习 MySQL 为例,因为其作为开源数据库技术的典型代表,有很多值得我们去学习的内容,也有很多值得探索和改进的地方。
有句话说得好:研究的方法,要合之而见其大,必先分之而致其精。
同样,在学习数据库及使用的过程中,只有按照这种精深的学习模式沉下心去钻研和测试,才能够真正理解数据库的一些技巧,把它转化为自己的经验。
如果自己通过第一种方式进行学习,可能确实会感到吃力,但所幸高鹏老师的新书《深入理解 MySQL 主从原理》是结合了第三种方式从源码的角度进行切入,对 MySQL 主从原理进行了实打实的分析和解读,让你能够很快对这一切熟悉起来,并于细节之处通过第二种方式进行对比介绍。
在 DBAplus 社群发起人杨建荣老师的眼中,优秀的工程师会具备这样 3 个特征:鹰眼(眼光犀利)、狮心(内心强大)、绣花手(做事认真细致)。这些特征在高鹏老师身上都能够看到。高鹏老师在书中的倾囊相授也体现出了他对技术孜孜不倦地追求,对促进和谐技术生态持续发展的热情。
数据库技术在当前大环境下非常重要,而 MySQL 主从复制是很多技术方向的根基和灵魂。
从 2017 年开始,高鹏老师的公司开始大量上线 MySQL5.7 基于 GTID 的主从构架,但是在实际的运维工程中遇到了不少问题和疑惑,也是很多 DBA 同学浅尝辄止的地方,比如:
主从延迟为什么瞬间跳动?
延迟为 0 就一定代表没有延迟吗?
从库能和主库一样利用索引吗?
MTS 是如何提高从库应用效率的?
mysql.gtid_executed 表在从库初始化的时候扮演着什么样的角色?
这些问题的答案在文档中是很难定位和快速理解的,而源码就好比一个放大镜,能够让我们一窥其中的奥秘和玄机,让技术细节不再神秘。
此外,从 MySQL 5.7.17 开始,官方推出了 MGR 高可用构架,这是未来 MySQL 高可用构架发展的方向,它和主从有着天然的联系。比如,GTID、Event、SQL 线程等基本都是通用的,要深入学习 MGR 就势必要先深入学习主从原理。
同时,在技术方向上需要不局限于当前的技术方案。比如,在主从原理方向上就形成了技术的分水岭。
如今,存储与计算分离的模式很火。比如,Aurora 的技术架构的重大变化就是对主从模式做了魔改,基于一套存储计算分离架构,将日志处理下推到分布式存储层,通过架构上的优化来解决网络瓶颈,这其实让我们也可以辩证地从另外一个角度来看待主从原理:
它的优点是什么?
它有哪些缺点?
它有哪些适用的场景?
这些都可以通过阅读《深入理解 MySQL 主从原理》一书来对比学习,形成自己的技术体系。
当然,通过阅读源码去理解原理这件事情,看上去不简单,实际也不简单,我们需要有一些基础概念的理解,需要一些基础知识的铺垫。
如果要深入学习主从原理,则需要按照一定的顺序进行学习;如果不知道 GTID、不知道 Event、不知道主库如何生成 Event 的,那么肯定不能深入理解主从原理。因此,本书按照这种顺序进行讲解。
本书一共分为 5 章,前 4 章应该作为一个整体顺序阅读,第 5 章和前面 4 章没有关联,可以独立阅读。
第 1 章:介绍 GTID 相关的知识点,包含 GTID 的构成、GTID 模块的初始化、GTID 中的运维等知识点。
第 2 章:介绍 binary log 中的各种主要 Event,各个 Event 通过作用、格式讲解、实际解析等几个维度进行描述。
第 3 章:介绍主库是如何生成 Event 的,以及 DUMP 线程是如何通过 GTID 进行主库 binary log 定位,并且进行 Event 传输的。
第 4 章:介绍从库是如何应用 Event 的,并且还包含了推荐的参数设置和 Seconds_Behind_Master 延迟的相关知识点。
第 5 章:本章作为知识拓展,讲解线程的初步知识、MDL LOCK、排序等热门话题,还包含了主从相关的案例。
▼
做技术是一件很朴素的事情,需要有舍有得,而且时常会带来孤独感,所幸在技术学习的道路上,有了社区,有了很多技术朋友的支持,剩下的就是热爱和坚持,可以支撑彼此这样一路走过来。
期待这本书能够带给你全新的阅读体验!
▊《深入理解 MySQL 主从原理》
高鹏 著
数位数据库专家/ACEDirector/ACE 赞誉推荐
凝结数百次故障诊断经验
从主库端到从库端带你深入解析 MySQL 主从构架的运行原理
MySQL 主从原理是高可用架构的基石,即便是 MGR 这种集群架构也可以看到主从的影子。要解决一个问题或者故障,最快的方式就是了解它的原理,快速定位问题。
本书从源码层面抽丝剥茧般地描述 MySQL 主从原理,全面地介绍了 GTID 相关的知识点,并解析了主要 Event 的生成、作用和格式,以及线程的初步知识、MDL LOCK、排序等热门话题和主从相关的案例。无论是 MySQL DBA 和 MySQL 源码爱好者,还是刚进入数据库行业的小白读者,通过阅读本书,都能通过源码级分析,更好地理解和使用 MySQL 主从复制技术。
评论