欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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ù),感興趣的朋友可以了解下

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

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

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)開(kāi)啟),這個(gè)時(shí)候產(chǎn)生的binlog會(huì)繼續(xù)推送到Master1消費(fèi),然后來(lái)來(lái)回回推送,一套insert語(yǔ)句就無(wú)窮無(wú)盡了,顯然這種設(shè)計(jì)是不合理的,MySQL也肯定不會(huì)這么做。

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

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

b) 如果沒(méi)有推送,Master2是如何過(guò)濾的

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

1) Master1的binlog

2) Master2的 relay log

3) Master的binlog

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

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

在Master1觸發(fā)語(yǔ)句:

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

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

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

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

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

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

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

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

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

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

而基于GTID模式可以唯一性標(biāo)識(shí)全局事務(wù),那么哪怕對(duì)這個(gè)操作進(jìn)行了重復(fù)應(yīng)用,哪怕是DDL語(yǔ)句,操作的影響行數(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è)過(guò)程不會(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恢復(fù)誤刪庫(kù)表數(shù)據(jù)完整場(chǎng)景演示

    Mysql恢復(fù)誤刪庫(kù)表數(shù)據(jù)完整場(chǎng)景演示

    在開(kāi)發(fā)和在生產(chǎn)中總會(huì)出現(xiàn)各種各樣的失誤和意味,當(dāng)MySQL的數(shù)據(jù)或表被刪除后不要慌,下面這篇文章主要給大家介紹了關(guān)于Mysql恢復(fù)誤刪庫(kù)表數(shù)據(jù)的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-07-07
  • Mysql?InnoDB中B+樹(shù)索引使用注意事項(xiàng)

    Mysql?InnoDB中B+樹(shù)索引使用注意事項(xiàng)

    這篇文章主要為大家介紹了Mysql?InnoDB中B+樹(shù)索引的注意事項(xiàng),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • 一篇文章帶你了解MySQL單表訪問(wèn)方法

    一篇文章帶你了解MySQL單表訪問(wèn)方法

    MySQL將對(duì)數(shù)據(jù)不同的訪問(wèn)方式稱為access method (訪問(wèn)方法),同一個(gè)SQL可以用不同的訪問(wèn)方法執(zhí)行,不過(guò)不同的方法花費(fèi)的成本差異也是巨大的,下面這篇文章主要給大家介紹了關(guān)于MySQL單表訪問(wèn)方法的相關(guān)資料,需要的朋友可以參考下
    2023-06-06
  • 新手入門Mysql--sql執(zhí)行過(guò)程

    新手入門Mysql--sql執(zhí)行過(guò)程

    MySQL 是一種關(guān)系型數(shù)據(jù)庫(kù),在Java企業(yè)級(jí)開(kāi)發(fā)中非常常用,因?yàn)?MySQL 是開(kāi)源免費(fèi)的,并且方便擴(kuò)展MySQL是開(kāi)放源代碼的,因此任何人都可以在 GPL的許可下下載并根據(jù)個(gè)性化的需要對(duì)其進(jìn)行修改
    2021-06-06
  • MySQL延時(shí)復(fù)制庫(kù)方法詳解

    MySQL延時(shí)復(fù)制庫(kù)方法詳解

    我相信很多人都遭遇過(guò)MySQL主從復(fù)制延遲的問(wèn)題,處理方案基本上就是你能搜索到的那些,那么我今天卻要說(shuō)說(shuō)如何讓MySQL延遲復(fù)制。對(duì)于剛組建的團(tuán)隊(duì)來(lái)說(shuō),這可能會(huì)救了你的項(xiàng)目
    2020-02-02
  • You have an error in your SQL syntax; check the manual that corresponds解決方法

    You have an error in your SQL&

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version
    2023-02-02
  • MySQL 主主同步配置步驟

    MySQL 主主同步配置步驟

    創(chuàng)建同步用戶、修改 /etc/my.cnf 配置文件,為其添加以下內(nèi)容、分別重啟服務(wù)器ODD EVEN 上的mysql服務(wù)
    2013-05-05
  • MAC下MYSQL數(shù)據(jù)庫(kù)密碼忘記的解決辦法

    MAC下MYSQL數(shù)據(jù)庫(kù)密碼忘記的解決辦法

    這篇文章主要介紹了Mac操作系統(tǒng)下MYSQL數(shù)據(jù)庫(kù)密碼忘記的快速解決辦法,教大家重置MYSQ密碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • 一個(gè)優(yōu)化MySQL查詢操作的具體案例分析

    一個(gè)優(yōu)化MySQL查詢操作的具體案例分析

    這篇文章主要介紹了一個(gè)優(yōu)化MySQL查詢操作的具體案例分析,主要針對(duì)join字段的使用方面做出調(diào)整,需要的朋友可以參考下
    2015-05-05
  • mysql安裝出現(xiàn)Install/Remove of the Service Denied!錯(cuò)誤問(wèn)題

    mysql安裝出現(xiàn)Install/Remove of the Service D

    這篇文章主要介紹了mysql安裝出現(xiàn)Install/Remove of the Service Denied!錯(cuò)誤問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12

最新評(píng)論