国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

MySQL配置了雙主,是如何避免出現數據回環沖突的

瀏覽:15日期:2022-09-30 09:44:10

不知道大家想過這個問題沒有?如果配置了雙主,是如何避免出現數據回環沖突的,因為在數據雙活的設計方案中,這可以算是方案的核心設計思想之一。

如果主庫觸發SQL語句:

insert into test_data(name) values(‘aa’);

那么Master1生成binlog,推送數據變化到Master2,在Master2上面生成relay log,然后交由sql thread進行變更重放,反之也是類似的流程,整個流程可以這樣描述。

MySQL配置了雙主,是如何避免出現數據回環沖突的

如果Master2消費了relay的數據,然后會產生binlog(log_slave_updates默認開啟),這個時候產生的binlog會繼續推送到Master1消費,然后來來回回推送,一套insert語句就無窮無盡了,顯然這種設計是不合理的,MySQL也肯定不會這么做。

那么問題的關鍵的部分就是:Master2是否推送了先前的binlog到Master1?

a) 如果推送了,Master1是如何過濾,避免后續無限循環

b) 如果沒有推送,Master2是如何過濾的

如果要理解這個過程,我們就需要模擬測試,查看數據流轉過程中的binlog情況,可以參考這個流程。

1) Master1的binlog

2) Master2的 relay log

3) Master的binlog

很快就部署好了一套主從環境,然后添加change master to 就快速搭建好了一套測試的雙主環境。

為了盡可能看到完整的binlog事件信息,我們開啟參數binlog_rows_query_log_events

在Master1觸發語句:

insert into test_data(name) values(‘gg’);

得到的binlog事件如下,可以清楚的看到相關的SQL語句。

MySQL配置了雙主,是如何避免出現數據回環沖突的

在Master2端,我們查看binlog的情況,在開啟binlog_rows_query_log_events的前提下會看到明顯少了事件:Rows_query.

MySQL配置了雙主,是如何避免出現數據回環沖突的

此時需要思考的是,在這個過程中偏移量是否發生了變化,從Master1產生的binlog到Master的relay log,如果通過mysqlbinlog去解析,得到的偏移量情況都是一模一樣,而在Master2消費后,產生了相關的binlog信息。

問題的關鍵就在這里,在Maser2里面是通過Server_id來標注了數據的源頭,所以在這里就稱為整個數據流轉的終點了,也就意味著數據復制的時候是按照server_id來進行U過濾的,每個Master端只會傳送自己相關的binlog信息。

如果從這個角度來說,MySQL對于復制中的server_id如此重要的一個原因就是基于此。

而如果換一個角度,看待基于偏移量的異步復制,其實也可以得到類似的信息。

這是Master1觸發insert語句后的binlog細節。

MySQL配置了雙主,是如何避免出現數據回環沖突的

這是Master2接受實時數據后的binlog細節。

MySQL配置了雙主,是如何避免出現數據回環沖突的

其實看到這里,還存在一個問題,那就是在偏移量模式下,如果需要一個數據變更操作在Master2丟失了,那么是沒有辦法進行回溯的。

而基于GTID模式可以唯一性標識全局事務,那么哪怕對這個操作進行了重復應用,哪怕是DDL語句,操作的影響行數也是0.

我們對一個已經執行的操作進行再次應用,看看MySQL是否會自動舍棄該類操作。

mysql> SET @@SESSION.GTID_NEXT= ’6fb744dd-05dd-11ea-ada7-52540043a8b5:6’;Query OK, 0 rows affected (0.00 sec)mysql> use `test`; create table test_data (id int primary key auto_increment,name varchar(30));Database changedQuery OK, 0 rows affected (0.00 sec)

查看show binlog events發現這個過程不會產生額外的binlog。

所以基于此,我們也基本明確了數據回環解決方法的一個設計思想,那就是如何讓MySQL能夠識別出那些已經應用的事務數據,我想GTID是一個答案,而且分布式ID不用,這是MySQL內部的處理機制,而且是MySQL能夠識別的方式。

以上就是MySQL配置了雙主,是如何避免出現數據回環沖突的的詳細內容,更多關于MySQL 避免數據回環沖突的資料請關注好吧啦網其它相關文章!

標簽: MySQL
主站蜘蛛池模板: 成年人免费观看视频网站 | 亚洲伦乱| 精品一区二区三区四区在线 | 欧美99 | 亚洲人成高清 | 日韩经典中文字幕 | 自拍 欧美 在线 综合 另类 | 亚洲精品在线看 | 波多野结衣中文无毒不卡 | 欧美一区二区三区gg高清影视 | 国产97视频在线 | a级一片| 欧美日韩综合精品一区二区三区 | 九九99九九在线精品视频 | 国产三级中文字幕 | 国产一区二区三区国产精品 | 美女黄色免费看 | 成人欧美在线 | 免费看一片 | 久久一区二区三区免费播放 | 亚洲国产网址 | 欧美三级成版人版在线观看 | 国产午夜毛片v一区二区三区 | 精品国产v无码大片在线观看 | 黄色成人在线 | 国产91一区二这在线播放 | 亚洲自拍高清 | 欧美在线一区二区三区 | 亚洲va久久久噜噜噜久久狠狠 | 一级二级三级毛片 | 欧美精品一区二区三区免费播放 | 久久视频在线播放视频99re6 | 亚洲一区二区三区免费看 | 成人影院免费观看 | 女人张开腿男人猛桶视频 | 欧美片网站免费 | 全部免费国产潢色一级 | 成人亚洲在线 | 国产深夜福利在线观看网站 | 国产精品99久久免费观看 | av av片在线看 |