這篇文章主要介紹了MySQL中基于GTID的復(fù)制模式是什么,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),梅河口企業(yè)網(wǎng)站建設(shè),梅河口品牌網(wǎng)站建設(shè),網(wǎng)站定制,梅河口網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,梅河口網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
GTID定義
GTID( Global Transaction Identifier)全局事務(wù)標(biāo)識(shí)。GTID是5.6 版本引入的一個(gè)有關(guān)于主從復(fù)制的重大改進(jìn),相對(duì)于之前版本基于Binlog文件+Position的主從復(fù)制,基于GTID的主從復(fù)制,數(shù)據(jù)一致性更高,主從數(shù)據(jù)復(fù)制更健壯,主從切換、故障切換不易出錯(cuò),很少需要人為介入處理。
表示方式
GTID = server_uuid:transaction_id
其GTID通常會(huì)記錄在MySQL的系統(tǒng)變量@@GLOBAL.gtid_executed
以及系統(tǒng)表mysql.gtid_executed
中,系統(tǒng)變量@@GLOBAL.gtid_executed
在內(nèi)存中,屬于非持久化存儲(chǔ),而系統(tǒng)表mysql.gtid_executed屬于持久化存儲(chǔ)。
GTID比傳統(tǒng)復(fù)制的優(yōu)勢(shì)
更簡(jiǎn)單的搭建主從復(fù)制
更簡(jiǎn)單的實(shí)現(xiàn)failover (主從切換),不用以前那樣一步一步的去找log_file
和log_pos
GTID是連續(xù)的沒有空洞的,保證數(shù)據(jù)的一致性,零丟失。
復(fù)制集群有一個(gè)統(tǒng)一的方式識(shí)別復(fù)制位置,給集群管理帶來了便利
GTID的限制
在一個(gè)事務(wù)里面混合使用引擎如Innodb,myisam,造成多個(gè)GTIDS
CREATE TABLE…..SELECT
不能使用
CREATE TEMPORARY TABLE and DROP TEMPORARY TABLE
不能在事務(wù)內(nèi)使用
主從復(fù)制流程圖
GTID生命周期
當(dāng)一個(gè)事務(wù)在一個(gè)主庫上被執(zhí)行和提交,那么這個(gè)事務(wù)就會(huì)被分配一個(gè)和該主庫uuid相關(guān)聯(lián)的gtid,這個(gè)gtid被寫入到主庫的binlog文件中。
當(dāng)這個(gè)binlog文件達(dá)到最大值發(fā)生輪轉(zhuǎn),或者M(jìn)ySQL Server關(guān)閉時(shí),上一個(gè)binlog文件中的事務(wù)GTID將會(huì)被寫入到mysql.gtid_executed
表中。
事務(wù)提交時(shí),該事務(wù)的gtid會(huì)很快的添加到系統(tǒng)變量@@GLOBAL.gtid_executed
,但是系統(tǒng)表 mysql.gtid_executed 則不會(huì),應(yīng)為有部分gtid還在binlog中,需要等到binlog輪轉(zhuǎn)或者mysqlServer關(guān)閉時(shí)才會(huì)寫入到mysql。gtid_executed
表中.
主庫上的binlog通過主從復(fù)制協(xié)議傳送到從庫,并寫入到從庫的relay log(中繼日志), 從庫讀取relay log中的gtid和對(duì)應(yīng)的事務(wù)信息,把gtid_next
設(shè)置為該gtid值,使得從庫使用該gtid值應(yīng)用其對(duì)應(yīng)的事務(wù)
如果多個(gè)線程并發(fā)應(yīng)用同一個(gè)事務(wù),比如多個(gè)線程設(shè)置gtid_next為同一個(gè)值,MySQL Server 只允許其中一個(gè)線程執(zhí)行,gtid_owned
系統(tǒng)變量記錄著誰擁有該GTID.
傳統(tǒng)更換GTID復(fù)制模式
配置GTID
所有服務(wù)器設(shè)置global.read_only
參數(shù),等待主從服務(wù)器同步完畢;
mysql> SET @@global.read_only = ON;
依次重啟主從服務(wù)器;
使用change master 更新主從配置;
mysql> CHANGE MASTER TO MASTER_HOST = host, MASTER_PORT = port, MASTER_USER = user, MASTER_PASSWORD = password, MASTER_AUTO_POSITION = 1;
5、開啟復(fù)制
mysql> START SLAVE;
6、驗(yàn)證主從復(fù)制
mysql> show slave status \G
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Mysql中基于GTID的復(fù)制模式是什么”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!