binlog,undo log,redo log

binlog

什么是binlog

binlog記錄了數(shù)據(jù)庫表結(jié)構(gòu)和表數(shù)據(jù)變更,比如update/delete/insert/truncate/create。它不會(huì)記錄select(因?yàn)檫@沒有對表沒有進(jìn)行變更)

作用
復(fù)制和恢復(fù)數(shù)據(jù)

  • MySQL在公司使用的時(shí)候往往都是一主多從結(jié)構(gòu)的,從服務(wù)器需要與主服務(wù)器的數(shù)據(jù)保持一致,這就是通過binlog來實(shí)現(xiàn)的

  • 數(shù)據(jù)庫的數(shù)據(jù)都被刪除了,我們可以通過binlog來對數(shù)據(jù)進(jìn)行恢復(fù)。

redo log

引入
MySQL是先把這條記錄所在的頁找到,然后把該頁加載到內(nèi)存中,將對應(yīng)記錄進(jìn)行修改?,F(xiàn)在就可能存在一個(gè)問題:如果在內(nèi)存中把數(shù)據(jù)改了,還沒來得及落磁盤,而此時(shí)的數(shù)據(jù)庫掛了怎么辦?顯然這次更改就丟了
MySQL引入了redo log,內(nèi)存寫完了,然后會(huì)寫一份redo log,這份redo log記載著這次在某個(gè)頁上做了什么修改。

存在的意義
redo log的存在為了:當(dāng)我們修改的時(shí)候,寫完內(nèi)存了,但數(shù)據(jù)還沒真正寫到磁盤的時(shí)候。此時(shí)我們的數(shù)據(jù)庫掛了,我們可以根據(jù)redo log來對數(shù)據(jù)進(jìn)行恢復(fù)。因?yàn)閞edo log是順序IO,所以寫入的速度很快,并且redo log記載的是物理變化(xxxx頁做了xxx修改),文件的體積很小,恢復(fù)速度很快。

binlog和redo的區(qū)別

1.存儲(chǔ)的內(nèi)容:binlog記載的是update/delete/insert這樣的SQL語句,而redo log記載的是物理修改的內(nèi)容(xxxx頁修改了xxx)。
2.作用:redo log的作用是為持久化而生的,binlog的作用是復(fù)制和恢復(fù)而生的。
”如果整個(gè)數(shù)據(jù)庫的數(shù)據(jù)都被刪除了,那我可以用redo log的記錄來恢復(fù)嗎?“不能

因?yàn)楣δ艿牟煌?,redo log 存儲(chǔ)的是物理數(shù)據(jù)的變更,如果我們內(nèi)存的數(shù)據(jù)已經(jīng)刷到了磁盤了,那redo log的數(shù)據(jù)就無效了。所以redo log不會(huì)存儲(chǔ)著歷史所有數(shù)據(jù)的變更,文件的內(nèi)容會(huì)被覆蓋的。

3.redo log是MySQL的InnoDB引擎所產(chǎn)生的。binlog無論MySQL用什么引擎,都會(huì)有的。

undo log

作用:回滾和多版本控制(MVCC)
在數(shù)據(jù)修改的時(shí)候,不僅記錄了redo log,還記錄undo log,如果因?yàn)槟承┰驅(qū)е率聞?wù)失敗或回滾了,可以用undo log進(jìn)行回滾

undo log主要存儲(chǔ)的也是邏輯日志,比如我們要insert一條數(shù)據(jù)了,那undo log會(huì)記錄的一條對應(yīng)的delete日志。我們要update一條記錄時(shí),它會(huì)記錄一條對應(yīng)相反的update記錄。

這也應(yīng)該容易理解,畢竟回滾嘛,跟需要修改的操作相反就好,這樣就能達(dá)到回滾的目的。因?yàn)橹С只貪L操作,所以我們就能保證:“一個(gè)事務(wù)包含多個(gè)操作,這些操作要么全部執(zhí)行,要么全都不執(zhí)行”?!驹有浴?/p>

因?yàn)閡ndo log存儲(chǔ)著修改之前的數(shù)據(jù),相當(dāng)于一個(gè)前版本,MVCC實(shí)現(xiàn)的是讀寫不阻塞,讀的時(shí)候只要返回前一個(gè)版本的數(shù)據(jù)就行了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容