- 深入理解MySQL主從原理
- 高鵬
- 286字
- 2021-04-16 16:29:19
1.2.2 主庫修改時機
1.binary log關閉
在binary log關閉的狀態下,不生成GTID,mysql.gtid_executed表、gtid_executed變量、gtid_purged變量均不更新。
2.binary log打開
主庫通常都被設置成binary log打開的狀態,需要重點關注一下。
mysql.gtid_executed表修改時機
在binary log切換時保存直到上一個binary log執行過的全部GTID,它不是實時更新的。這個過程主要會調用Gtid_state::save_gtids_of_last_binlog_into_table函數,下面是部分代碼:

gtid_executed變量修改時機
在order commit的FLUSH階段生成GTID,在COMMIT階段才計入gtid_executed變量,它是實時更新的。這個過程是通過調用Gtid_state::update_gtids_impl函數完成的。代碼如下。

gtid_purged變量修改時機
在清理binary log時修改,比如在執行命令purge binary logs或者超過參數expire_logs_days的設置后自動刪除,需要將丟失的GTID SET計入這個變量,因此它不是實時更新的。這個過程主要集中在MYSQL_BIN_LOG::purge_logs函數中。代碼片段如下。

推薦閱讀
- Learn TypeScript 3 by Building Web Applications
- SQL Server 2012數據庫技術及應用(微課版·第5版)
- Apache Spark 2.x Machine Learning Cookbook
- 程序員面試算法寶典
- Building RESTful Python Web Services
- Jenkins Continuous Integration Cookbook(Second Edition)
- Java EE 8 Application Development
- The Professional ScrumMaster’s Handbook
- 深入淺出Go語言編程
- JavaScript程序設計(第2版)
- JBoss:Developer's Guide
- RubyMotion iOS Develoment Essentials
- UML軟件建模
- The Applied Data Science Workshop
- Serverless從入門到進階:架構、原理與實踐