龙空技术网

想理解MySQL主从原理?看这本书就够了

杨建荣的学习笔记 186

前言:

现时你们对“mysqlmts”可能比较关注,看官们都需要了解一些“mysqlmts”的相关文章。那么小编在网络上汇集了一些关于“mysqlmts””的相关内容,希望兄弟们能喜欢,大家一起来了解一下吧!

数据库技术在当下的大环境下显得尤为重要,对于核心技术的掌握和沉淀,同时能够构建和谐的技术生态持续发展,MySQL的发展可以作为开源数据库技术的典型代表,里面有很多我们去学习的内容,也有很多探索和改进的方向, 有句话说得好:研究的方法,要合之而见其大,必先分之而致其精,同样在我们的数据库学习和使用中也需要按照这种精深的学习模式能够沉下心去钻研和测试,才能够真正理解数据库的一些技巧,把它转化为你的经验。

在我的学习经历中,如果想快速学习一门技术,一种方式是通过代码来理解它的实现,来反推它的逻辑,这种方式的难度极大,而且起点相对高,能够沉浸其中的人非常少,过程相对来说是苦闷的,但如果能够沉下心来,看代码和调试一种程度之后,有了感觉,相信就会融会贯通。身边这种大神也有,但确实不多。

第二种方式算是捷径,就是去听听作者怎么说,通过他的分享来从整体对一个项目有一个基本的认识和了解,好比你去拜访一个朋友,他热情地把你领进门,带着你走走客厅,走走卧室,给你介绍房子的装修风格、里面的家具和电器,为什么要这么设计,很快你就能够对这一切熟悉起来。这种方式很好,而且最省事,但可遇不可求。

第三种是我比较喜欢的方式,就是通过对比的方式来学习,比如学习MySQL和Oracle的学习,有了Oracle的基础学起来会容易很多。但越是深入学习,发现两者的差别越来越大,不断通过对比来完善自己的认知,从差异化中找到学习的重点和方向,也能够对技术的发展有一个相对理性的认识。

所幸,高鹏兄的书是按照第一种和第二种的组合,这是从源码的角度来切入MySQL主从原理方向的,里面都是实打实的源码分析和原理解读,在技术方向孜孜不倦的追求,需要花费很多额外的精力,同时愿意分享和总结,也是我建议很多朋友学习的地方,我眼中的工程师模型是这样的,简单三个特征:鹰眼(眼光犀利),狮心(内心强大),绣花手(做事认真细致),这些在高鹏兄身上都能够看到。

MySQL主从复制,是我个人比较喜好的一个方向,因为它是很多技术方向的根基和灵魂,从2017年开始高鹏兄的公司开始大量线上MySQL5.7基于GTID的主从构架,但是在实际的运维工程中遇到了不少问题和疑惑,也是很多DBA同学浅尝辄止的细节,比如,

l 主从延迟为什么瞬间跳动?

l 延迟为0就一定代表没有延迟吗?

l 从库能和主库一样利用索引吗?

l MTS是如何提高从库应用效率的?

l mysql.gtid_executed表在从库初始化的时候扮演着什么样的角色?

这些问题的答案在文档中是很难定位和快速理解的,而通过源码,就好比一个放大镜,能够一窥其中的奥秘和玄机,让技术细节不再神秘。

此外,从MySQL 5.7.17开始官方推出了MGR高可用构架,这是未来MySQL高可用构架发展的方向,它和主从有着天然的联系,比如GTID,Event,SQL线程等基本都是通用的,要深入学习MGR就势必要先深入学习主从原理,同时,在技术方向需要不局限于当前的技术方案,比如在主从原理方向上,也形成了技术的分水岭,如今存储与计算分离的模式很火,比如Aurora的技术架构的重大变化就是对主从模式做了魔改,基于一套存储计算分离架构,将日志处理下推到分布式存储层,通过架构上的优化来解决网络瓶颈,这其实让我们也可以辩证的从另外一个角度来看待主从原理,它的优点是什么,它有哪些缺点,它有哪些适用的场景,这些都可以通过阅读本书来对比学习,形成自己的技术体系。

当然通过阅读源码去理解原理这件事情,看上去不简单,实际也不简单,我们需要有一些基础概念的理解,需要一些基础知识的铺垫, 如果要深入学习主从原理需要按照一定的顺序进行学习,如果不知道GTID、不知道Event、不知道主库如何生成Event的,那么肯定不能深入理解主从原理 ,因此本书按照这种顺序进行讲解。本书一共分为5章,前4章应该作为一个整体顺序阅读,第5章和前面4章没有关联,可以独立阅读,

· 第一章:介绍GTID相关的知识点,包含GTID的构成、GTID模块的初始化、GTID中的运维等知识点。

· 第二章:介绍binary log中的各种主要Event,各个Event通过作用、格式讲解、实际解析等几个维度进行描述。

· 第三章:介绍主库是如何生成Event的,以及DUMP线程是如何通过GTID进行主库binary log定位,并且进行Event传输的。

· 第四章:介绍从库是如何应用Event的,并且还包含了推荐的参数设置和Seconds_Behind_Master延迟的相关知识点。

第五章:本章作为知识拓展,讲解线程的初步知识、MDL LOCK、排序等热门话题,还包含了主从相关的案例。

做技术是一件很朴素的事情,需要有舍有得,而且时常会感到孤独,所幸的是在技术的道理上,有了社区,有了很多技术朋友的支持,剩下的就是热爱和坚持,可以支撑彼此这样一路走过来。

期待这本书能够带给你全新的阅读体验,希望高鹏兄的书大卖。

——dbaplus社群发起人,腾讯云TVP,Oracle ACE 杨建荣

京东、当当、淘宝均可购买

各大平台都可以找到我微信公众号:杨建荣的学习笔记Github:@jeanron100CSDN:@jeanron100知乎:@jeanron100头条号:@杨建荣的学习笔记网易号:@杨建荣的数据库笔记大鱼号:@杨建荣的数据库笔记腾讯云+社区:@杨建荣的学习笔记


标签: #mysqlmts