官术网_书友最值得收藏!

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刪除時更新,不做討論。

主站蜘蛛池模板: 岢岚县| 抚顺市| 文登市| 焉耆| 锦州市| 鄂州市| 昭苏县| 苗栗县| 三江| 彰化市| 镇安县| 沅陵县| 威海市| 肃宁县| 平顺县| 乌苏市| 保康县| 景宁| 廉江市| 甘德县| 宁化县| 新津县| 沾益县| 闽清县| 霍城县| 新田县| 花垣县| 岐山县| 红原县| 通州区| 齐河县| 紫阳县| 司法| 许昌县| 德兴市| 莱阳市| 潞城市| 通江县| 乌兰浩特市| 西乌珠穆沁旗| 桦甸市|