最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL配置了雙主,是如何避免出現(xiàn)數(shù)據(jù)回環(huán)沖突的

 更新時(shí)間:2021年01月28日 11:50:53   作者:jeanron100  
這篇文章主要介紹了MySQL配置了雙主,是如何避免出現(xiàn)數(shù)據(jù)回環(huán)沖突的,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫(kù),感興趣的朋友可以了解下

不知道大家想過這個(gè)問題沒有?如果配置了雙主,是如何避免出現(xiàn)數(shù)據(jù)回環(huán)沖突的,因?yàn)樵跀?shù)據(jù)雙活的設(shè)計(jì)方案中,這可以算是方案的核心設(shè)計(jì)思想之一。

如果主庫(kù)觸發(fā)SQL語句:

insert into test_data(name) values(‘a(chǎn)a');

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

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

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

a) 如果推送了,Master1是如何過濾,避免后續(xù)無限循環(huán)

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

如果要理解這個(gè)過程,我們就需要模擬測(cè)試,查看數(shù)據(jù)流轉(zhuǎn)過程中的binlog情況,可以參考這個(gè)流程。

1) Master1的binlog

2) Master2的 relay log

3) Master的binlog

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

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

在Master1觸發(fā)語句:

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

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

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

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

問題的關(guān)鍵就在這里,在Maser2里面是通過Server_id來標(biāo)注了數(shù)據(jù)的源頭,所以在這里就稱為整個(gè)數(shù)據(jù)流轉(zhuǎn)的終點(diǎn)了,也就意味著數(shù)據(jù)復(fù)制的時(shí)候是按照server_id來進(jìn)行U過濾的,每個(gè)Master端只會(huì)傳送自己相關(guān)的binlog信息。

如果從這個(gè)角度來說,MySQL對(duì)于復(fù)制中的server_id如此重要的一個(gè)原因就是基于此。

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

這是Master1觸發(fā)insert語句后的binlog細(xì)節(jié)。

這是Master2接受實(shí)時(shí)數(shù)據(jù)后的binlog細(xì)節(jié)。

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

而基于GTID模式可以唯一性標(biāo)識(shí)全局事務(wù),那么哪怕對(duì)這個(gè)操作進(jìn)行了重復(fù)應(yīng)用,哪怕是DDL語句,操作的影響行數(shù)也是0.

我們對(duì)一個(gè)已經(jīng)執(zhí)行的操作進(jìn)行再次應(yīng)用,看看MySQL是否會(huì)自動(dòng)舍棄該類操作。

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 changed

Query OK, 0 rows affected (0.00 sec)

查看show binlog events發(fā)現(xiàn)這個(gè)過程不會(huì)產(chǎn)生額外的binlog。

所以基于此,我們也基本明確了數(shù)據(jù)回環(huán)解決方法的一個(gè)設(shè)計(jì)思想,那就是如何讓MySQL能夠識(shí)別出那些已經(jīng)應(yīng)用的事務(wù)數(shù)據(jù),我想GTID是一個(gè)答案,而且分布式ID不用,這是MySQL內(nèi)部的處理機(jī)制,而且是MySQL能夠識(shí)別的方式。

以上就是MySQL配置了雙主,是如何避免出現(xiàn)數(shù)據(jù)回環(huán)沖突的的詳細(xì)內(nèi)容,更多關(guān)于MySQL 避免數(shù)據(jù)回環(huán)沖突的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • MySQL數(shù)據(jù)表損壞的正確修復(fù)方案

    MySQL數(shù)據(jù)表損壞的正確修復(fù)方案

    修復(fù)以損壞的MySQL數(shù)據(jù)表的實(shí)際操作在實(shí)際中是我們經(jīng)常用到的,以下的文章主要是介紹正確修復(fù)以損壞的MySQL數(shù)據(jù)表的實(shí)際操作步驟,以下就是正文的介紹,希望會(huì)給你帶來一些幫助在此方面。
    2011-01-01
  • 解決mysql的賦權(quán)操作之GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘%‘ IDENTIFIED BY ‘123456‘ WITH GRANT OPTION問題

    解決mysql的賦權(quán)操作之GRANT ALL PRIVILEGES ON *.*

    這篇文章主要介紹了解決mysql的賦權(quán)操作之GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘%‘ IDENTIFIED BY ‘123456‘ WITH GRANT OPTION問題,本文給大家分享兩種情況分析分享解決方案,感興趣的朋友一起看看吧
    2022-11-11
  • 詳解DBeaver連接MySQL8以上版本以及解決可能遇到的問題

    詳解DBeaver連接MySQL8以上版本以及解決可能遇到的問題

    這篇文章主要介紹了DBeaver連接MySQL8以上版本以及解決可能遇到的問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • mysql 5.7.14 安裝配置簡(jiǎn)單教程

    mysql 5.7.14 安裝配置簡(jiǎn)單教程

    這篇文章主要為大家分享了mysql 5.7.14安裝配置方法圖文教程,一看就會(huì)的mysql 5.7.14安裝教程,感興趣的朋友可以參考一下
    2016-08-08
  • Mysql事務(wù)索引知識(shí)匯總

    Mysql事務(wù)索引知識(shí)匯總

    這篇文章主要介紹了Mysql事務(wù)索引知識(shí)匯總,mysql事務(wù)是用于處理操作量大、復(fù)雜性高的數(shù)據(jù),索引能加快數(shù)據(jù)庫(kù)的查詢速度并高效獲取指定的數(shù)據(jù),下文相關(guān)詳細(xì)內(nèi)容,需要的小伙伴可以參考一下
    2022-03-03
  • MySQL清理數(shù)據(jù)并釋放磁盤空間的實(shí)現(xiàn)示例

    MySQL清理數(shù)據(jù)并釋放磁盤空間的實(shí)現(xiàn)示例

    本文主要介紹了MySQL如何清理數(shù)據(jù)并釋放磁盤空間,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • CentOS安裝mysql5.7 及簡(jiǎn)單配置教程詳解

    CentOS安裝mysql5.7 及簡(jiǎn)單配置教程詳解

    這篇文章主要介紹了CentOS安裝mysql5.7 及簡(jiǎn)單配置教程詳解,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-02-02
  • 開發(fā)人員為什么必須要了解數(shù)據(jù)庫(kù)鎖詳解

    開發(fā)人員為什么必須要了解數(shù)據(jù)庫(kù)鎖詳解

    這篇文章主要給大家介紹了關(guān)于開發(fā)人員為什么必須要了解數(shù)據(jù)庫(kù)鎖的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用數(shù)據(jù)庫(kù)具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • MySQL定時(shí)全庫(kù)備份數(shù)據(jù)庫(kù)

    MySQL定時(shí)全庫(kù)備份數(shù)據(jù)庫(kù)

    數(shù)據(jù)備份真的很重要, 因?yàn)榭赡苡幸惶鞌?shù)據(jù)會(huì)被莫名其妙的刪掉了,本文主要介紹了MySQL定時(shí)備份數(shù)據(jù)庫(kù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • MySQL虛擬列的使用示例

    MySQL虛擬列的使用示例

    虛擬列是MySQL中的一種特殊列,它不存儲(chǔ)在表中,而是在查詢時(shí)動(dòng)態(tài)計(jì)算生成,虛擬列可以提高查詢效率、減少存儲(chǔ)需求、確保數(shù)據(jù)一致性、簡(jiǎn)化查詢和保護(hù)敏感數(shù)據(jù),感興趣的可以了解一下
    2024-11-11

最新評(píng)論

SHOW| 隆回县| 武穴市| 青海省| 班戈县| 汾西县| 乌什县| 石棉县| 临城县| 天柱县| 万年县| 乌拉特后旗| 涞源县| 华蓥市| 左云县| 娄底市| 体育| 四会市| 西青区| 商洛市| 仁布县| 宜章县| 荃湾区| 霍山县| 蓝田县| 巴林左旗| 巴林左旗| 建宁县| 安多县| 民丰县| 兴和县| 滨州市| 新乡县| 宿松县| 河南省| 宁明县| 天峨县| 尼玛县| 蒲江县| 开江县| 顺平县|