共計 1710 個字符,預計需要花費 5 分鐘才能閱讀完成。
這篇文章給大家分享的是有關 MYSQL_GTID 的示例分析的內容。丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,一起跟隨丸趣 TV 小編過來看看吧。
一、GTID 概述
GTID 是 MYSQL5.6 新增的特性,GTID(Global Transaction Identifier)全稱為全局事務標示符, 用以數據庫實例事務唯一標識,其組成主要是 source_id 和 transaction_id 即 GTID = source_id:transaction_id。其中 source_id 是數據庫啟動自動生成的數據庫實例唯一標識,保存在 auto.cnf 中,而 transaction_id 則是事務執行的序列號。
二、GTID 優缺點
優點:
復制安全性更高,一個事務在每個實例上只執行一次;
故障切換簡單,可通過設置 MASTER_AUTO_POSITION=1,而非 master_log_file 和 master_log_pos 來建立主從關系;
可根據 GTID 確定事務最早提交的實例;
缺點:
組復制中,必須要求統一開啟 GTID 或者關閉 GTID;
不支持復制 create table table_name select … from table_name_xx ;
不支持 create temporary table 和 drop temporary table;
不支持 sql_slave_skip_counter,可通過 set global gtid_next= 跳過;
從庫和主庫都必須設置 log_slave_updates
三、GTID 工作原理
1、master 更新數據時,會在事務前產生 GTID,一同記錄到 binlog 日志中。
2、slave 端的 i /o 線程將變更的 binlog,寫入到本地的 relay log 中。
3、sql 線程從 relay log 中獲取 GTID,然后對比 slave 端的 binlog 是否有記錄。
4、如果有記錄,說明該 GTID 的事務已經執行,slave 會忽略。
5、如果沒有記錄,slave 就會從 relay log 中執行該 GTID 的事務,并記錄到 binlog。
6、在解析過程中會判斷是否有主鍵,如果沒有就用二級索引,如果沒有就用全部掃描。
四、GTID 開啟和關閉
gtid_mode=ON(必選)
log_bin=ON(必選)
log-slave-updates=ON(必選)
enforce-gtid-consistency(必選)
log-bin = /home/mysql/mysql-bin(必選)
binlog_format = MIXED(必選 mixed 或者 row)
##
change master to master_host = ipaddr ,master_port = 3306,master_user = username ,master_password= password ,master_auto_position = 1;
五、GTID 適用場景
1、搭建高可用架構,方便主從切換后,新的從庫重新指定主庫(例如一主二從的結構,A 為 mater,B 為 Slave,C 為 Slave,A 宕機切換到 B 后,C 重新指定主庫為 B)
2、不經常使用 create table table_name select * from table_name/create temporary table/update t1,t2 where … 這種語句的場合
六、GTID 相關參數
comment
gtid_executed
執行過的所有 GTID,可通過 reset master 重置
gtid_purged
丟棄掉的 GTID,設置后從而導致 slave 不會再去 master 請求這些 GTIDs,并且 Executed_Gtid_Set 為空時,才可以設置此值
gtid_mode
gtid 模式
gtid_next
session 級別的變量,下一個 gtid
gtid_owned
正在運行的 gtid
enforce_gtid_consistency
保證 GTID 安全的參數
感謝各位的閱讀!關于“MYSQL_GTID 的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!