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

1.1.6 gtid_executed表的作用

官方文檔這樣描述gtid_executed表:

也就是說,gtid_executed表是GTID持久化的一個介質。實例重啟后所有的內存信息都會丟失,GTID模塊初始化需要讀取GTID持久化介質。

可以發現,gtid_executed表是InnoDB表,建表語句如下,并且可以手動更改它,但是除非是測試,否則千萬不要修改它。

除了gtid_executed表,還有一個GTID持久化的介質,那就是binary log中的GTID_EVENT。

既然有了 binary log 中的GTID_EVENT 進行 GTID 的持久化,為什么還需要gtid_executed表呢?筆者認為,這是MySQL 5.7.5之后的一個優化,可以反過來思考,在MySQL 5.6 中,如果使用 GTID 做從庫,那么從庫必須開啟 binary log,并且設置參數 log_slave_updates=ture,因為從庫執行過的GTID操作都需要保留在binary log中,所以當GTID模塊初始化的時候會讀取它獲取正確的GTID SET。接下來,看一段MySQL 5.6官方文檔對于搭建GTID從庫的說明。

然而,開啟binary log的同時設置參數log_slave_updates=ture必然會造成一個問題。很多時候,從庫是不需要做級聯的,設置參數log_slave_updates=ture會造成額外的空間和性能開銷。因此需要另外一種 GTID 持久化介質,而并不是 binary log 中的 GTID_EVENT,gtid_executed表正是這樣一種GTID持久化的介質。在1.3節會看到它的讀取過程。

主站蜘蛛池模板: 原阳县| 阳城县| 巴楚县| 栖霞市| 繁昌县| 蓬莱市| 明光市| 义乌市| 新疆| 左云县| 桓台县| 南安市| 云林县| 罗田县| 扎鲁特旗| 贡嘎县| 榕江县| 新乡县| 贡觉县| 潜山县| 楚雄市| 丰城市| 琼海市| 乌苏市| 泰和县| 张家港市| 恭城| 米易县| 民勤县| 荆门市| 安庆市| 安远县| 信宜市| 开江县| 晋宁县| 富民县| 贵阳市| 苗栗县| 绥中县| 常宁市| 石首市|