溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

你對(duì)Mysql日志模塊的理解以及什么是兩段式提交

發(fā)布時(shí)間:2021-10-26 17:06:51 來(lái)源:億速云 閱讀:115 作者:柒染 欄目:大數(shù)據(jù)

你對(duì)Mysql日志模塊的理解以及什么是兩段式提交,相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。

Mysql的日志模塊尤為重要,平日的crash-safe和主從都依賴(lài)我們的日志模塊。

Mysql有兩個(gè)日志模塊:redologbinlog

咱們先看一下redolog。

redolog中文來(lái)講就是重做日志,它有什么用呢?如果每次你的更新或者插入都寫(xiě)入磁盤(pán)的話(huà)那這個(gè)IO成本就比較大了,所以InnoDB就把記錄先記錄在redolog中,并同時(shí)更新到內(nèi)存中,這樣就完成了一次更新或插入了!

而且redolog是循環(huán)寫(xiě)的,也就是有固定大小的,當(dāng)快寫(xiě)滿(mǎn)的時(shí)候mysql就會(huì)把把一些記錄更新到磁盤(pán)中,然后清除更新的那些redolog,給之后的記錄騰出空間。

binlog也就是歸檔日志,它又是什么用呢?顧名思義它的主要作用就是歸檔(還有主從)!有三種模式:

  1. statement:記錄每一條除了查詢(xún)之外語(yǔ)句。

  2. row:記錄每一行記錄修改的形式,也就是記錄了哪一行改了,改了啥!就比如你update了100條記錄,那它就會(huì)記錄這100條記錄改了啥(5.1.5版本才有)

  3. mixed:就是statement和row的混合了,由mysql來(lái)判斷這條語(yǔ)句用哪種形式記錄!(5.1.8版本才有)

binlog沒(méi)有固定大小,每次都是追加記錄不會(huì)覆蓋之前的。

還有一點(diǎn),redolog只有InnoDB才有,它是存在引擎層的,而binlog是存在Server層的。所以如果你用的存儲(chǔ)引擎的MyISAM,那么你就沒(méi)有redolog了!

接下來(lái)我們?cè)僬f(shuō)說(shuō)兩段式提交。

兩段式提交

就是我們先把這次更新寫(xiě)入到redolog中,并設(shè)redolog為prepare狀態(tài),然后再寫(xiě)入binlog,寫(xiě)完binlog之后再提交事務(wù),并設(shè)redolog為commit狀態(tài)。也就是把relolog拆成了prepare和commit兩段!

為啥要這樣做?

其實(shí)redolog是后來(lái)才加上的,binlog是之前就有的。一開(kāi)始存儲(chǔ)引擎只有MyISAM,后來(lái)才有的InnoDB,然后MyISAM沒(méi)有事務(wù),沒(méi)有crash-safe的能力。所以InnoDB搞了個(gè)redolog。然后為了保證兩份日志同步,所以才有了兩段式提交。

你假設(shè)一下如果先保存好redolog,然后再記錄binlog。如果redolog寫(xiě)好了之后掛了。ok你看起來(lái)好像是沒(méi)問(wèn)題了,但是你的binlog還沒(méi)記錄,所以這條記錄就少了!如果你備份這份binlog之后,你這條記錄就永遠(yuǎn)的少了!

那如果先寫(xiě)binlog再寫(xiě)redolog呢?那binlog寫(xiě)完了,你數(shù)據(jù)庫(kù)掛了,那redolog是不是沒(méi)有,沒(méi)有的意思就是你以前你沒(méi)更新成功。但是binlog已經(jīng)記錄好了,在它那邊反正是成功了,所以那備份的binlog也不對(duì)!

看完上述內(nèi)容,你們掌握你對(duì)Mysql日志模塊的理解以及什么是兩段式提交的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI