导读:
做者:下鹏(网名八怪),《深化了解MySQL主从道理32讲》系列文的做者。 2008年开端至古不断处置Oracle/MySQL相干事情,现任易极付初级DBA,Oracle Ocm。 有丰硕的数据库机能调劣,毛病诊断经历,而且对MySQL源码有必然的研讨。
《深化了解MySQL主从道理32讲》专栏包罗GTID部门、Event部门、主库部门、从库部门四年夜块去具体解说主从道理。期望能协助读者伴侣们处理闭于主从同步中的一些疑问。八怪写风格格非常松散,险些每篇皆是从源码动手来分析MySQL主从复造相干的常识面。
激烈保举大家定阅本专栏
业界年夜咖保举序
从2016年开端八怪(本名下鹏)常常背我就教一些源码成绩,可睹八怪是一个对源码十分固执的人。纵不雅全部目次笼盖了主从的各个方面,期望他的那个系列可以让大家对主从道理有愈加深化的了解。 ————翟卫祥(网名印风) 阿里云智能数据库产物奇迹部初级MySQL内乱核专家
战八怪(本名叫下鹏)熟悉,源于他的一名同事参与了知数堂的MySQL课程,进修之余战八怪有些交流互动,对一些概念有些讨论,然后便瓜熟蒂落的熟悉了。八怪本来是ORACLE DBA,但他打仗MySQL以后,开端对MySQL各类深化探求,这类进修的立场战办法令我服气,也反过去增进我更深化了解MySQL。
为了更好了解InnoDB引擎,八怪借已经开辟了bctool、bcview战innblock等几个东西(另有些是我没有明白的),此中innblock东西的开辟我也做为“产物司理”帮手提了一些倡议,那个东西公布后,也正在我的公家号帮手盛大的推了一波:innblock | InnoDB page察看利器。
自从听闻八怪要写专栏,我便不断存眷着期望,偶然也会帮手提些倡议。那个专栏次要内乱容是MySQL主从复造相干的内乱容,从源码层里深化剖析MySQL主从复造的各个方面,略有遗憾的是本书出有触及半同步复造、组复造那两圆里的热点内乱容,等待八怪正在将来能有肉体增长那两年夜块常识面。
————叶金枯 MySQL ACE、知数堂结合初创人
下鹏是一名干事十分专注并且入手才能超强的人。此中有一件工作我印象出格深入,正在经由过程战我交流MGR下可用节面挑选后,没有到两周工夫,又给我讲他完成了一个MGR vip漂移的Python剧本。他前后完成了InnoDB的Page阐发,MySQL InnoDB减锁阐发,又开端转战勤奋写做本系列,经由过程本系列的目次能够看到下鹏根本把复造相干道理做了一个完全的阐发,关于念深化了解MySQL复造及Binlog相干内乱容的伴侣来讲是一个车载斗量的进修材料。 ————吴炳锡 知数堂结合初创人
做为一个曾古混迹于itpub的白叟,拜读过很多下鹏的Oracle圆里的文章。偶尔之间发明其转战MySQL范畴,并攥写了大批道理性分析的文章,印象较为深入的是几篇闭于MDL lock的源码层里的剖析,读完后觉得恍然大悟。开源数据库今朝愈来愈水,特别以MySQL表现最为抢眼,假如要深化进修MySQL主从道理,本系列其实是车载斗量的材料,激烈保举之! ————李实旭 Oracle ACE 云战恩朱效劳产物群总司理
熟悉下鹏源于ITPUB blog 专家保举,初识于Oracle妙技,随后MySQL妙技鼓起,大家转战MySQL,下鹏兄侧重源码分析,对各类疑问纯症阐发鞭辟入里,热情协助许多网友处理各类成绩。如今他将本人对MySQL 主从复造部门源码的解读汇总成系列文章分享给大家。细细品读,肯定受益很多。
————杨偶龙 杭州有赞科技DBA,公家号yangyidba做者
八怪自序 信赖做为一位DBA来说MySQL主从不断皆是一个绕没有开的话题,我们正在许多下可用构架中皆能看到它的身影。正在我们心中必然皆或多或少的发生过一些疑问,好比:
- 主从提早为何会下?
- 主从提早为何不断没有动?
- 主从提早为何霎时跳动?
- 提早为0便必然代表出有提早吗?
- 从库非常重启为何会报错?
- 从库能战主库一样操纵索引吗?
- MTS是怎样进步从库使用服从的?
- 为何会有那末多战从库相干的sync参数,我该怎样设置?
- mysql.gtid_executed表有甚么用?
......
那个系列便是念经由过程形貌主从道理,抽丝剥茧解开大家对那些成绩的迷惑。我以为假如要深化进修主从道理需求根据必然的挨次举办进修,假如没有明白GTID、没有明白Event、没有明白主库怎样天生Event的,那末必定不克不及深化了解主从道理 ,因而本系列根据这类挨次解说。
本系列一共分为5个部门以下:
第一部门 GTID相干 第1节:GTID的根本观点
第2节:mysql.gtid_executed表/gtid_executed变量/gtid_purged变量的变动机会
第3节:GTID模块初初化简介战参数binlog_gtid_simple_recovery
第4节:GTID中的运维 第两部门 Event相干 第5节:Binary log Event 的整体格局
第6节:重面Event FORMAT_DESCRIPTION_EVENT/PREVIOUS_GTIDS_LOG_EVENT
第7节:重面Event GTID_LOG_EVENT
第8节:重面Event QUERY_EVENT/MAP_EVENT
第9节:重面Event WRITE_ROWS_EVENT/DELETE_ROWS_EVENT
第10节:重面Event UPDATE_ROWS_EVENT/XID_EVENT
第11节:参数binlog_row_image的影响
第12节:巧用Event发明成绩 第三部门 主库相干 第13节:binlog cache简介
第14节:事件Event的天生战写进流程
第15节:MySQL层事件提交流程简析
第16节:基于WRITESET的并止复造方法
第17节:主库的DUMP线程
第18节:DUMP线程查找战过滤GTID的根本算法 第四部门 从库相干 第19节:从库MTS多线程并止回放(一)
第20节:从库MTS多线程并止回放(两)
第21节:MTS中GAP测试战参数slave_preserve_commit_order
第22节:从库的IO线程
第23节:从库的SQL线程(MTS和谐线程)战参数sql_slave_skip_counter
第24节:从库数据的查找战参数slave_rows_search_algorithms
第25节:从库的封闭战规复流程
第26节:宁静下效的从库设置
第27节:从库Seconds_Behind_Master的计较方法
第28节:从库Seconds_Behind_Master提早总结 第五部门 其他 第29节:线程简介战MySQL调试情况拆建
第30节:Delete取Insert 逝世锁案例阐发
第31节:Innodb Buffer Pool的三种Page战链表
第32节:操纵performance_schema获得形成逝世锁的语句
此中:
- 前里29节由我单独编写。
- 第30节战第31节别离由我的伴侣杨偶龙战王航威编写,他们皆是有赞的DBA,正在平常的交流中我感应他们浏览之广是我不克不及及的。
- 第32节由我的同事田兴椿编写,正在平常的事情战进修中他老是能找到一些让我惊奇的案例,然后一同进修研讨。
会商范畴战商定:
本系列利用源码版本为Percona 5.7.22,因而会商的范畴必定是5.7版本。
本系列固然包罗了主从中的年夜部门常识面,可是仍旧有部门内乱容出有笼盖,以下:
- 没有笼盖半同步。
- 只思索master_info_repository战relay_log_info_repository设置为‘table’的状况。
- 只思索binlog_format设置为‘row’的状况。
本系列商定以下:
- 止格局:binlog_format设置为‘row’。
- 语句格局:binlog_format设置为‘statement’。
- binary log:那里代表是我们常道的binlog物理文件。
- order commit:代表的是‘MYSQL_BIN_LOG::ordered_commit’函数,由于本系列中利用频次很下因而做了简化。将会正在15节具体它的流程。
- GTID AUTO_POSITION MODE:代表主从利用的是GTID同时利用了master_auto_position=1。
- POSITION MODE:代表主从利用的是传统的位面形式。
- 单SQL线程:用去战MTS举办辨别,代表只要一个SQL线程举办Event的使用。
- MTS:‘multi-threaded slaves’的简称,包罗一个和谐线程战多个事情线程,Event由事情线程使用。
编写方法
正在编写之初有些伴侣倡议我没有写源码而有些伴侣倡议我多揭些代码,因而我做了一下综开,全部系列中我会给出一些源码接心战需要的源码证实,可是没有会揭许多源码战栈帧。有些章节会包罗一个条记放到我的简书,那个条记便是我进修的时分纪录的源码挪用挨次战一些栈帧供本人温习之用也供念了解源码的伴侣查察,可是可读性没有是那末好。假如对源码没有感爱好的伴侣能够跳过那些源码接心战代码,我以为那其实不会影响浏览的连续性。
留意
- 本系列是基于MySQL 5.7编写的。
- 本系列局部是图片的情势,分为注释图片、附录图片两部门,注释中的一些下浑图放到了附录中,能够保留到当地放年夜查察。
- 因为做者才能有限固然我只管包管松散,可是毛病正在所不免。假如发明毛病能够联系我,我会考证后举办变动。
感激
十分感激翟卫祥、叶金枯、吴炳锡、李实旭、杨偶龙百闲当中为本系列做保举序,出格感激叶金枯为本系列校稿。
辨认下圆两维码增加做者为好友
END
面击下图小法式定阅
《深化了解MySQL主从道理32讲》专栏
可了解更多八怪妙技文章
扫码参加MySQL妙技Q群
(群号:793818397)
免责声明:假如进犯了您的权益,请联络站少,我们会实时删除侵权内乱容,感谢协作! |
1、本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,按照目前互联网开放的原则,我们将在不通知作者的情况下,转载文章;如果原文明确注明“禁止转载”,我们一定不会转载。如果我们转载的文章不符合作者的版权声明或者作者不想让我们转载您的文章的话,请您发送邮箱:Cdnjson@163.com提供相关证明,我们将积极配合您!
2、本网站转载文章仅为传播更多信息之目的,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证信息的正确性和完整性,且不对因信息的不正确或遗漏导致的任何损失或损害承担责任。
3、任何透过本网站网页而链接及得到的资讯、产品及服务,本网站概不负责,亦不负任何法律责任。
4、本网站所刊发、转载的文章,其版权均归原作者所有,如其他媒体、网站或个人从本网下载使用,请在转载有关文章时务必尊重该文章的著作权,保留本网注明的“稿件来源”,并自负版权等法律责任。