10节课写个Binlog Server

课程大纲

01.楔子

02.架构设计

03.存储方案

04.Syncer

05.复制原理实现(一): Event

06.复制原理实现(二): Cmd

07.Dumper

08.复制原理实现(三): Mysql连接协议

09.复制原理实现(四): Mysql复制协议

10.交付

适宜人群

后端工程师,对go语言和中间件开发有兴趣的同学

课程说明

在我过去工作中,遇到过大大小小的线上故障,有的是机器的资源问题,有的是代码问题,大部分处理都情有可原。但还有一类线上故障,造成的影响非常大,那就是mysql的主从同步延迟问题,而让我惊讶的是,针对这个问题的处理,很多人的思考都集中在业务那一层,比如将数据读取从从库切换到主库,或者优化sql,提高mysql的性能等等。好像都忽略了这个问题的本质在数据库那一层,在主从数据同步那里。

这个项目课用10节课讲一个Binlog Server,是数据库主从同步延迟问题非常有效的解决方案。10节课里面不会着重于每一个变量的定义和每一个方法的实现,侧重于mysql复制原理的知识点讲解和具体实现。同时,这是一门中间件课程,用的是Golang语言,对于习惯了Web编程和非Golang开发同学来说,也是一个还算可以的学习项目。

购买须知:
1、本课程为虚拟产品,一经购买,概不退款(讲师特别声明除外)
2、在使用过程中,遇到任何问题,请邮件联系:pr@sifou.com
3、划线价说明:商品展示的划横线价格为参考价,并非原价。该价格仅供您参考。

版权声明:讲者在本产品上发表的全部原创内容(包括但不限于文字、视频、图片等)著作权均归讲师本人所有。未经讲师授权许可,观众用户不得以任何载体或形式使用讲师的内容。

5.0 10条评价

小九 · 2019-09-14

老师,我也有几个问题:
1.我看了老师说的那3个sql解析器,看得有点吃力,卡在那里了,有什么办法能快速理解
2.我发现老师说的架构对实时性要求有点高,如果我的项目对实时性要求不高,有没有其他方法?
3.然后,老师说的有赞nsq,我在GitHub上看不懂

Kyrie · 2019-09-16

1.sql解析其实需要点编译原理的基础,涉及到前端编译里面的词法解析,AST树生成,语法解析还有上下文等等,这里一两句讲不太清楚,可以先去了解下,过段时间我也写篇文章讲讲;

2.Binlog Server对实时性要求高不是更好吗?...如果你的项目对实时性要求不高,那可以把binlog放到Kafka,等着消费也行

3.有赞的nsq看不懂的话,可以先看原本的nsq,用一下,再去看有赞的

明明明 · 2019-09-13

讲课有趣又专业,主要是课件很优惠,能学到很多,慢慢经营起口碑,厉害

Kyrie · 2019-09-16

感谢支持

ok啦 · 2019-09-09

大佬优秀,录制的比之前直播的好多了,舒服?

Kyrie · 2019-09-10

舒服就好,感谢支持

牧羊小北 · 2019-09-05

努力看了几天,收获很大,现在终于知道gtid是咋回事了,有2个问题想问老师:
1.这个gtid_executed值怎么初始化的,课里提到有个gtid数据表,我把它清空了为什么有时候还有值?
2.好奇老师在公司自己搞这个binlog server吗,还是有个专门的中间件团队?小公司有必要搞吗?

Kyrie · 2019-09-06

同学很认真,??
1.gtid_executed值的初始化,除了跟gtid数据表有关,还跟mysql-bin.index有关;首先从mysql-bin.index里面找到第一个previous_gtids_log_event的binlog,会读取这个binlog的gtid集合,然后再跟mysql.gtid_executed表记录求并集
简单来说,就是 (previous_gtids_log_event.gtid) U (mysql.gtid_executed) = gtid_executed变量值。

2.搞这个binlog server是应对业务复杂的情景,当你公司数据库耦合问题越来越严重,或者主从延迟变得频繁,每个开发都觉得无力的时候,就可以往这个方向考虑;如果不是呢,首先还是花时间在数据表设计上。

denzi · 2019-08-20

不错,学习学习

zh2302277 · 2019-08-20

给大佬跪舔了

zhaot · 2019-08-19

很棒 很有见解,持续学习中?

ak520hl · 2019-08-19

讲的很好

Amusic · 2019-08-19

加个油,小伙子

东垂小夫 · 2019-08-19

讲得太好了