MySQL 從5.6.5開始支援GTID(global transaction identifieds)全域性事務標誌,一個事務會對應一個GTID,一個GTID只會在server執行一次,能夠避免重複執行導致資料不同步,所以MySQL Replication GTID比傳統的Replicaiton更加安全。
使用GTID也不需要再找Log_file和Log_pos, 而且GTID是連續的,當master與slave有資料衝突時,可以新增空的事務跳過。
當master更新資料時,會產生GTID紀錄在binlog,slave的i/o thread會將變更的binlog寫入relaylog,sql thread從relaylog取得GTID,對比slave的binog是否有紀錄,若有紀錄,代表GTID事務已經執行,slave會忽略,若沒有紀錄,slave會從relaylog執行GTID。
Vim /etc/my.cnf
[mysqld]
gtid_mode=on #開啟GTID
enforce_gtid_consistency=on
無法使用create temporary table 或drop remporary table
無法使用create table …select,因為會產生兩個event,使用到同一個GTID,但slave只會使用一次GTID)