- 深入理解MySQL主從原理
- 高鵬
- 394字
- 2021-04-16 16:29:19
1.2.3 從庫修改時機
1.binary log開啟,參數log_slave_updates關閉
通常,從庫都被設置為這種狀態,需要重點關注一下。
mysql.gtid_executed表修改時機
前面已經說過,在這種情況下從庫沒有辦法通過binary log來持久化執行過的GTID事務,因為它根本就沒有記錄Event。只能通過實時更新mysql.gtid_executed表來保存,所以必須要實時將GTID持久化到mysql.gtid_executed表中。
其主要邏輯包含在commit_owned_gtids函數中。代碼片段如下。

gtid_executed變量修改時機
實時更新,但是更新位置和主庫不同,因為這里不會執行 order commit 步驟了。由Gtid_state::update_on_commit函數調入。
gtid_purged變量修改時機
因為沒有binary log來記錄已經執刪除的GTID Event,所以gtid_purged變量實時更新。其處理邏輯依然是通過Gtid_state::update_on_commit函數調入Gtid_state::update_gtids_impl_own_gtid函數進行的。
代碼片段如下。

2.binary log開啟,參數log_slave_updates開啟
在這種情況下,SQL 線程執行過的GTID操作可以通過 binary log 進行保存,所以mysql.gtid_executed表和gtid_purged變量不需要實時更新。
mysql.gtid_executed表修改時機
和主庫一致。即在日志切換時更新,不做討論。
gtid_executed變量修改時機
和主庫一致,實時更新,不做討論。
gtid_purged變量修改時機
和主庫一致,在binary log刪除時更新,不做討論。
- C及C++程序設計(第4版)
- 新編Visual Basic程序設計上機實驗教程
- 極簡算法史:從數學到機器的故事
- Python概率統計
- DBA攻堅指南:左手Oracle,右手MySQL
- Java多線程編程實戰指南:設計模式篇(第2版)
- Kali Linux Web Penetration Testing Cookbook
- LabVIEW程序設計基礎與應用
- SQL Server 2016從入門到精通(視頻教學超值版)
- 程序員面試算法寶典
- Python應用輕松入門
- Learning Apache Mahout Classification
- Windows Embedded CE 6.0程序設計實戰
- Visual Studio 2015高級編程(第6版)
- 編程可以很簡單