您好,登錄后才能下訂單哦!
這篇文章主要介紹了Mysql中基于GTID的復(fù)制模式是什么,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
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ù)的沒(méi)有空洞的,保證數(shù)據(jù)的一致性,零丟失。
復(fù)制集群有一個(gè)統(tǒng)一的方式識(shí)別復(fù)制位置,給集群管理帶來(lái)了便利
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è)主庫(kù)上被執(zhí)行和提交,那么這個(gè)事務(wù)就會(huì)被分配一個(gè)和該主庫(kù)uuid相關(guān)聯(lián)的gtid,這個(gè)gtid被寫(xiě)入到主庫(kù)的binlog文件中。
當(dāng)這個(gè)binlog文件達(dá)到最大值發(fā)生輪轉(zhuǎn),或者M(jìn)ySQL Server關(guān)閉時(shí),上一個(gè)binlog文件中的事務(wù)GTID將會(huì)被寫(xiě)入到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ì)寫(xiě)入到mysql。gtid_executed
表中.
主庫(kù)上的binlog通過(guò)主從復(fù)制協(xié)議傳送到從庫(kù),并寫(xiě)入到從庫(kù)的relay log(中繼日志), 從庫(kù)讀取relay log中的gtid和對(duì)應(yīng)的事務(wù)信息,把gtid_next
設(shè)置為該gtid值,使得從庫(kù)使用該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)變量記錄著誰(shuí)擁有該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、開(kāi)啟復(fù)制
mysql> START SLAVE;
6、驗(yàn)證主從復(fù)制
mysql> show slave status \G
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Mysql中基于GTID的復(fù)制模式是什么”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。