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

MySQL主從同步延遲的原因及解決辦法

 更新時(shí)間:2019年03月26日 09:55:32   作者:BrickCarrier  
今天小編就為大家分享一篇關(guān)于MySQL主從同步延遲的原因及解決辦法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧

由于歷史原因,MySQL復(fù)制基于邏輯的二進(jìn)制日志,而非重做日志。多次被問到何時(shí)MySQL能支持基于物理的復(fù)制,其實(shí)這就看MySQL各位大佬的想法。上次和賴?yán)蠋熌X暴,倏地說道:MySQL會不會來個基于Paxos的redo復(fù)制?

物理復(fù)制的真正好處不在于正確性,因?yàn)榛赗OW格式的日志復(fù)制也已能完全保證復(fù)制的正確性。由于物理日志的寫入是在事務(wù)執(zhí)行過程中就不斷寫入,而二進(jìn)制日志的寫入僅僅在事務(wù)提交時(shí)。因此物理日志的優(yōu)勢如下所示:

  • 復(fù)制架構(gòu)下,大事務(wù)日志提交速度快;
  • 復(fù)制架構(gòu)下,主從數(shù)據(jù)延遲小;

假設(shè)執(zhí)行了1個小時(shí)的某大事務(wù),在最后提交時(shí),只需寫入最后提交部分的重做日志(redo log可視為物理日志)。雖然此大事務(wù)重做日志寫入的總量可能有1G,然而在提交時(shí),數(shù)據(jù)主從復(fù)制僅需將最后一部分日志傳輸?shù)竭h(yuǎn)程從機(jī),因?yàn)橹暗闹刈鋈罩疽呀?jīng)在執(zhí)行的1個小時(shí)內(nèi)不斷地同步到從機(jī)。

對于二進(jìn)制日志,由于其寫入時(shí)間發(fā)生在事務(wù)提交時(shí),因此假設(shè)產(chǎn)生了1G的二進(jìn)制日志,則需要事務(wù)提交時(shí)間會包含這1G日志的寫入時(shí)間。在Oracle中有一種說法,事務(wù)的提交速度都是平的,不論事務(wù)的大小。這在MySQL數(shù)據(jù)庫中是不成立的。即,MySQL的提交速度取決于事務(wù)產(chǎn)生的二進(jìn)制日志的大小,事務(wù)提交的速度不是平的。

更為糟糕的是,MySQL主從復(fù)制在大事務(wù)下的延遲。同樣假設(shè)1個大事務(wù)在主服務(wù)器上執(zhí)行了1個小時(shí),則需要在最后的提交時(shí)間傳送到從服務(wù)器。主從延遲的時(shí)間至少為1個小時(shí),若從服務(wù)器執(zhí)行還需1個小時(shí),則主從復(fù)制延遲的最壞情況可能是2個小時(shí)。物理復(fù)制則不存在這樣的限制,原因還是如前所述,事務(wù)提交過程中,日志已經(jīng)在傳輸和回放。

物理復(fù)制雖好,但是也有自己的缺陷,就我自己的實(shí)際體驗(yàn)來看:

  • 物理復(fù)制下,主機(jī)壞塊會導(dǎo)致主從服務(wù)器都無法啟動;相信遇到過此問題的同學(xué)不在少數(shù);
  • 此外,做ETL是有困難的,比如怎么將物理日志同步到Hadoop大數(shù)據(jù)平臺呢?

一言以蔽之,對于MySQL數(shù)據(jù)庫來說,任何時(shí)刻不允許有大事務(wù)執(zhí)行。若要執(zhí)行,則將大事務(wù)拆成一個個小的子事務(wù)來執(zhí)行。這是最基本心法口訣,但卻又和Oracle有著很大不同??傊?,氣宗、劍宗,本無好壞,學(xué)會理解其中的差異,融會貫通方可達(dá)風(fēng)清揚(yáng)般的致臻境界。

mysql 用主從同步的方法進(jìn)行讀寫分離,減輕主服務(wù)器的壓力的做法現(xiàn)在在業(yè)內(nèi)做的非常普遍。 主從同步基本上能做到實(shí)時(shí)同步。我從別的網(wǎng)站借用了主從同步的原理圖。

在配置好了, 主從同步以后, 主服務(wù)器會把更新語句寫入binlog,   從服務(wù)器的IO 線程(這里要注意, 5.6.3 之前的IO線程僅有一個,5.6.3之后的有多線程去讀了,速度自然也就加快了)回去讀取主服務(wù)器的binlog 并且寫到從服務(wù)器的Relay log 里面,然后從服務(wù)器的 的SQL thread 會一個一個執(zhí)行 relay log 里面的sql , 進(jìn)行數(shù)據(jù)恢復(fù)。

relay 就是 傳遞, relay race 就是接力賽的意思

1. 主從同步的延遲的原因

我們知道, 一個服務(wù)器開放N個鏈接給客戶端來連接的, 這樣有會有大并發(fā)的更新操作, 但是從服務(wù)器的里面讀取binlog 的線程僅有一個, 當(dāng)某個SQL在從服務(wù)器上執(zhí)行的時(shí)間稍長 或者由于某個SQL要進(jìn)行鎖表就會導(dǎo)致,主服務(wù)器的SQL大量積壓,未被同步到從服務(wù)器里。這就導(dǎo)致了主從不一致, 也就是主從延遲。

2. 主從同步延遲的解決辦法

實(shí)際上主從同步延遲根本沒有什么一招制敵的辦法, 因?yàn)樗械腟QL必須都要在從服務(wù)器里面執(zhí)行一遍,但是主服務(wù)器如果不斷的有更新操作源源不斷的寫入, 那么一旦有延遲產(chǎn)生, 那么延遲加重的可能性就會原來越大。 當(dāng)然我們可以做一些緩解的措施。

  • a. 我們知道因?yàn)橹鞣?wù)器要負(fù)責(zé)更新操作, 他對安全性的要求比從服務(wù)器高, 所有有些設(shè)置可以修改,比如sync_binlog=1,innodb_flush_log_at_trx_commit = 1 之類的設(shè)置,而slave則不需要這么高的數(shù)據(jù)安全,完全可以講sync_binlog設(shè)置為0或者關(guān)閉binlog,innodb_flushlog, innodb_flush_log_at_trx_commit 也 可以設(shè)置為0來提高sql的執(zhí)行效率 這個能很大程度上提高效率。另外就是使用比主庫更好的硬件設(shè)備作為slave。
  • b. 就是把,一臺從服務(wù)器當(dāng)度作為備份使用, 而不提供查詢, 那邊他的負(fù)載下來了, 執(zhí)行relay log 里面的SQL效率自然就高了。
  • c. 增加從服務(wù)器嘍,這個目的還是分散讀的壓力, 從而降低服務(wù)器負(fù)載。

3. 判斷主從延遲的方法

MySQL提供了從服務(wù)器狀態(tài)命令,可以通過 show slave status 進(jìn)行查看,  比如可以看看Seconds_Behind_Master參數(shù)的值來判斷,是否有發(fā)生主從延時(shí)。

其值有這么幾種:

NULL - 表示io_thread或是sql_thread有任何一個發(fā)生故障,也就是該線程的Running狀態(tài)是No,而非Yes.
0 - 該值為零,是我們極為渴望看到的情況,表示主從復(fù)制狀態(tài)正常

其它的方法我也沒試過, 暫時(shí)不做評論

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接

相關(guān)文章

  • 徹底卸載MySQL的方法分享

    徹底卸載MySQL的方法分享

    由于安裝MySQL的時(shí)候,疏忽沒有選擇底層編碼方式,采用默認(rèn)的ASCII的編碼格式,于是接二連三的中文轉(zhuǎn)換問題隨之而來,就想卸載了重新安裝MYSQL,這一卸載倒是出了問題,導(dǎo)致安裝的時(shí)候安裝不上,在網(wǎng)上找了一個多小時(shí)也沒解決。
    2011-08-08
  • MySQL中g(shù)roup by與max()一起使用的坑

    MySQL中g(shù)roup by與max()一起使用的坑

    最近在做一個項(xiàng)目,發(fā)現(xiàn)用之前SQL語句導(dǎo)出的余額與客戶人員最近消費(fèi)記錄所顯示的余額不一致,本文就來了解一下這個錯誤,感興趣的可以了解一下
    2023-08-08
  • mysql分配root賬號創(chuàng)建數(shù)據(jù)庫的權(quán)限的實(shí)現(xiàn)

    mysql分配root賬號創(chuàng)建數(shù)據(jù)庫的權(quán)限的實(shí)現(xiàn)

    root用戶通常具有所有的權(quán)限,本文主要介紹了mysql分配root賬號創(chuàng)建數(shù)據(jù)庫的權(quán)限的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • MySQL中l(wèi)ike模糊查詢的優(yōu)化方法小結(jié)

    MySQL中l(wèi)ike模糊查詢的優(yōu)化方法小結(jié)

    本文介紹了五種優(yōu)化MySQL中l(wèi)ike模糊查詢的方法,主要包含后綴匹配走索引、反向索引、縮小搜索范圍、使用緩存和借助全文搜索引擎這幾種,感興趣的可以了解一下
    2024-11-11
  • 與MSSQL對比學(xué)習(xí)MYSQL的心得(一)--基本語法

    與MSSQL對比學(xué)習(xí)MYSQL的心得(一)--基本語法

    最開始接觸的數(shù)據(jù)庫為MSSQL,不過最近項(xiàng)目需求,仔細(xì)學(xué)習(xí)了下MYSQL,下面就對比MSSQL,把MYSQL的學(xué)習(xí)心得分享給大家
    2014-06-06
  • mysql千萬級數(shù)據(jù)大表該如何優(yōu)化?

    mysql千萬級數(shù)據(jù)大表該如何優(yōu)化?

    如何設(shè)計(jì)或優(yōu)化千萬級別的大表?此外無其他信息,個人覺得這個話題有點(diǎn)范,就只好簡單說下該如何做,對于一個存儲設(shè)計(jì),必須考慮業(yè)務(wù)特點(diǎn),收集的信息如下
    2011-08-08
  • MYSQL拒絕訪問報(bào)錯not allowed to connect

    MYSQL拒絕訪問報(bào)錯not allowed to connect

    MYSQL拒絕訪問報(bào)錯not allowed to connect,下面有個可行的方法,可以在其它任何的主機(jī)上以root身份登錄
    2014-07-07
  • 詳解mysql 獲取某個時(shí)間段每一天、每一個小時(shí)的統(tǒng)計(jì)數(shù)據(jù)

    詳解mysql 獲取某個時(shí)間段每一天、每一個小時(shí)的統(tǒng)計(jì)數(shù)據(jù)

    這篇文章主要介紹了mysql 獲取某個時(shí)間段每一天、每一個小時(shí)的統(tǒng)計(jì)數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • MySQL深分頁問題的原因及解決方案

    MySQL深分頁問題的原因及解決方案

    MySQL?作為最受歡迎的開源關(guān)系數(shù)據(jù)庫之一,被廣泛用于各種規(guī)模的應(yīng)用程序中,分頁是一種常見的數(shù)據(jù)檢索技術(shù),它允許用戶在大量數(shù)據(jù)中瀏覽和檢索信息,當(dāng)涉及到“深分頁”時(shí),即查詢大量數(shù)據(jù)后的頁面時(shí),MySQL?的性能可能會顯著下降,本文介紹了MySQL深分頁問題的原因及解決方案
    2024-09-09
  • MySQL數(shù)據(jù)庫聚合查詢和聯(lián)合查詢詳解

    MySQL數(shù)據(jù)庫聚合查詢和聯(lián)合查詢詳解

    聚合查詢就是在一個表里通過聚合函數(shù)進(jìn)行查詢操作,通常是求和,求平均值等操作,這篇文章主要介紹了MySQL聚合查詢和聯(lián)合查詢的相關(guān)資料,需要的朋友可以參考下
    2024-03-03

最新評論

来凤县| 和硕县| 西安市| 浮山县| 崇阳县| 清苑县| 昌黎县| 崇文区| 平凉市| 宝兴县| 荥经县| 齐河县| 根河市| 崇信县| 亚东县| 惠水县| 蕲春县| 全州县| 铜陵市| 手游| 甘洛县| 蒲江县| 榆树市| 北京市| 绥宁县| 阿图什市| 九龙坡区| 昌黎县| 河池市| 寻乌县| 合作市| 宁乡县| 华宁县| 通化县| 平阴县| 大方县| 墨江| 南溪县| 尖扎县| 承德县| 辉南县|