Mysql Gtid特性是5.6加入的一個(gè)強(qiáng)大的特性墙懂,它的目的在于使用Gtid的Mysql能夠在整個(gè)復(fù)制環(huán)境中能夠自動(dòng)的切換兼犯,而不像以前需要指定文件和位置磅崭,這也一定是未來(lái)發(fā)展的方向垫竞,我們熟知的MGR也是基于Gtid的缓屠,所以了解Gtid的原理也是必要的畜普。
Gtid的維護(hù)是完全自動(dòng)的期丰,但是實(shí)際使用上確實(shí)有較多的坑,也導(dǎo)致很多朋友對(duì)Gtid還是覺(jué)得畏懼吃挑,本系列文章將從Gtid模塊的源碼出發(fā)分析钝荡,并且給出總結(jié),然后結(jié)合運(yùn)維和案例進(jìn)行綜合的解析舶衬,我希望拋磚引玉讓希望了解源碼的朋友也有所收獲埠通,但是能力有限特別是源碼部分如果有錯(cuò)誤請(qǐng)指出,并且能夠一起交流约炎,如果有朋友有更好的案例也歡迎一起探討植阴。
當(dāng)然留下這么一個(gè)系列也有自己的原因,好記性不如爛筆頭嘛圾浅,因此也當(dāng)自己的一個(gè)筆記了掠手。
本系列文章使用源碼版本為percona 5.7.14,也比較過(guò)5.7.17狸捕,5.6.25的源碼版本喷鸽。占時(shí)沒(méi)有能力比較全部的Mysql源碼版本,有誤導(dǎo)還請(qǐng)見(jiàn)諒灸拍。
一做祝、Gtid事務(wù)的生命周期
Gtid的全稱為global transaction identifier,他在整個(gè)復(fù)制生態(tài)中完全唯一的鸡岗,下面我們通過(guò)一個(gè)圖來(lái)解釋它的整個(gè)生命周期混槐,假設(shè)我們這里有一個(gè)master->slave->slave的復(fù)制環(huán)境,生成了一個(gè)Gtid為89dfa8a4-cb13-11e6-b504-000c29a879a3:1的Gtid 事務(wù)轩性,因?yàn)槊痔L(zhǎng)我簡(jiǎn)化為879a3:1如圖:
我們可以看到在整個(gè)生命周期中整個(gè)事務(wù)的Gtid號(hào)是沒(méi)有改變的声登,不管在主庫(kù)還是從庫(kù)它都是89dfa8a4-cb13-11e6-b504-000c29a879a3:1,這也是為什么叫做全局的原因。
二悯嗓、本系列文章包含了哪些內(nèi)容
本系列文章一共分為十節(jié):
- Mysql 5.7 Gtid內(nèi)部學(xué)習(xí)(一) 導(dǎo)讀
http://www.reibang.com/p/87f66cdeb49c - Mysql 5.7 Gtid內(nèi)部學(xué)習(xí)(二) Gtid相關(guān)內(nèi)部數(shù)據(jù)結(jié)構(gòu)
http://www.reibang.com/p/5649644fdc13 - Mysql 5.7 Gtid內(nèi)部學(xué)習(xí)(三) Gtid和Last_commt/sequnce_number的生成時(shí)機(jī)
http://www.reibang.com/p/6ee969dc2c9b - Mysql 5.7 Gtid內(nèi)部學(xué)習(xí)(四) mysql.gtid_executed表的作用和Previous gtid Event的改變
http://www.reibang.com/p/1f4f9c07ce0b - Mysql 5.7 Gtid內(nèi)部學(xué)習(xí)(五) mysql.gtid_executed表/gtid_executed變量/gtid_purged變量的更改時(shí)機(jī)
http://www.reibang.com/p/905d7e89a305 - Mysql 5.7 Gtid內(nèi)部學(xué)習(xí)(六) Mysql啟動(dòng)初始化Gtid模塊
http://www.reibang.com/p/fc836446cde0 - Mysql 5.7 Gtid內(nèi)部學(xué)習(xí)(七) 總結(jié)binlog_gtid_simple_recovery參數(shù)帶來(lái)的影響
http://www.reibang.com/p/c9888d6447c8 - Mysql 5.7 Gtid內(nèi)部學(xué)習(xí)(八) Gtid帶來(lái)的運(yùn)維改變
http://www.reibang.com/p/caae9a019dbd - Mysql 5.7 Gtid內(nèi)部學(xué)習(xí)(九) 實(shí)際案例(一)
http://www.reibang.com/p/2c25842d58d3 - Mysql 5.7 Gtid內(nèi)部學(xué)習(xí)(十) 實(shí)際案例(二)
http://www.reibang.com/p/052a03b68fab
每一節(jié)都包含了總結(jié)和大量的文字描述件舵,希望對(duì)普通的運(yùn)維DBA也有所幫助,同時(shí)也希望對(duì)想了解源碼的DBA也有所引導(dǎo)脯厨。
三铅祸、總結(jié)
本節(jié)只是一個(gè)導(dǎo)讀,希望能夠讓大家對(duì)Gtid有一個(gè)基本了解合武,如果需要繼續(xù)了解可以看看官方文檔临梗。
- 18.1.3 Replication with Global Transaction Identifiers