2.日志系統(tǒng)

date: 2019-05-22 10:39:31

redo log innodb的“語(yǔ)音便簽”

我早上上班路上一邊開(kāi)車一邊聽(tīng)專欄偶洋,聽(tīng)到需要記錄的東西會(huì)在等紅燈的時(shí)候用語(yǔ)音便簽記錄下,晚上睡覺(jué)前才會(huì)整理成博客。這個(gè)過(guò)程中,邊開(kāi)車邊整理博客我是做不到的右核,所以我先用語(yǔ)音便簽做了一個(gè)簡(jiǎn)單記錄渤昌,等我空閑的時(shí)候才會(huì)把語(yǔ)音便簽整理到博客上。

MySQL也一樣脸侥,如果每次更新、刪除操作都去直接更新磁盤文件盈厘,那能容忍的并發(fā)恐怕極其有限了睁枕。在innodb中采用了redo log的方式先把操作記錄下來(lái),等空閑的時(shí)候再把redo log批量更新到磁盤中沸手。

redo log的文件數(shù)量和大小可以配置外遇,當(dāng)達(dá)到配置的值時(shí),會(huì)觸發(fā)批量寫入磁盤操作契吉,清空redo log跳仿。

名詞

  • WAL技術(shù) Write-Ahead Logging 先寫日志,再寫磁盤
  • crash-safe 有了redo log捐晶,可以保證即使服務(wù)突然異常菲语,也不會(huì)丟失數(shù)據(jù)

binlog Server層的“語(yǔ)音便簽”

上面的redo log是引擎層的日志,server層也有自己的日志惑灵,稱為binlog(歸檔日志)

問(wèn)題

  • 為什么有兩份日志山上?
    • binlog只有歸檔能力,沒(méi)有crash-safe能力英支;innodb為了crash-safe能力引入了redo log
  • binlog和redo log有啥不同佩憾?
    • redo log是innodb特有的,binlog是MySQL的server層的日志干花,所有引擎都可以使用
    • redo log是物理日志妄帘,記錄的是“在某個(gè)數(shù)據(jù)頁(yè)上做了什么修改”;binlog是邏輯日志池凄,記錄的是這個(gè)語(yǔ)句的原始邏輯抡驼,比如“給ID=2這一行的c字段加1 ”
    • redo log是循環(huán)寫的,空間固定會(huì)用完肿仑;binlog是可以追加寫入的婶恼∩=祝“追加寫”是指binlog文件寫到一定大小后會(huì)切換到下一個(gè),并不會(huì)覆蓋以前的日志勾邦。

兩階段提交

一次更新操作的流程

  • 執(zhí)行器找引擎取到要修改的記錄
  • 引擎查看記錄是否在內(nèi)存中蚣录,如果在內(nèi)存中,直接返回給執(zhí)行器眷篇;否則需要從磁盤讀入內(nèi)存萎河,然后再返回
  • 執(zhí)行器拿到數(shù)據(jù)后計(jì)算新的數(shù)值,再調(diào)用引擎寫入這行新數(shù)據(jù)
  • 引擎將這行數(shù)據(jù)更新到內(nèi)存中蕉饼,同時(shí)寫入redo log(prepare狀態(tài))虐杯;然后告知執(zhí)行器執(zhí)行完了,隨時(shí)可以提交事務(wù)
  • 執(zhí)行器把這個(gè)操作的binlog寫入磁盤中
  • 執(zhí)行器通知引擎昧港,引擎把剛剛寫入的redo log狀態(tài)更新為commit


    兩階段提交

為什么需要兩階段提交擎椰?

如果MySQL服務(wù)異常宕機(jī),我們需要使用定時(shí)鏡像+binlog來(lái)恢復(fù)數(shù)據(jù)创肥。

如果沒(méi)有兩階段提交达舒,要么先寫binlog,要么先寫redo log叹侄,考慮只寫了一個(gè)日志的情況巩搏,即寫完一個(gè)日志就宕機(jī)的情況。

  • 先寫redo log后寫binlog
    • redo log恢復(fù)后的數(shù)據(jù)是更新后的
    • binlog恢復(fù)的數(shù)據(jù)是更新前的
  • 先寫binlog后寫redo log
    • binlog恢復(fù)的數(shù)據(jù)是更新后的
    • redo log恢復(fù)的數(shù)據(jù)是更新前的

如果沒(méi)有兩階段提交趾代,上述情況下就出現(xiàn)了引擎狀態(tài)(庫(kù)的實(shí)際狀態(tài))和用binlog恢復(fù)出來(lái)的庫(kù)狀態(tài)不一致的問(wèn)題贯底;不只有數(shù)據(jù)庫(kù),兩階段提交也是跨系統(tǒng)維持?jǐn)?shù)據(jù)邏輯一致性時(shí)常用的一個(gè)方案撒强。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末禽捆,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子飘哨,更是在濱河造成了極大的恐慌胚想,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件杖玲,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡淘正,警方通過(guò)查閱死者的電腦和手機(jī)摆马,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)鸿吆,“玉大人囤采,你說(shuō)我怎么就攤上這事〕痛荆” “怎么了蕉毯?”我有些...
    開(kāi)封第一講書人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵乓搬,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我代虾,道長(zhǎng)进肯,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任棉磨,我火速辦了婚禮江掩,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘乘瓤。我一直安慰自己环形,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布衙傀。 她就那樣靜靜地躺著抬吟,像睡著了一般。 火紅的嫁衣襯著肌膚如雪统抬。 梳的紋絲不亂的頭發(fā)上火本,一...
    開(kāi)封第一講書人閱讀 49,007評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音蓄喇,去河邊找鬼发侵。 笑死,一個(gè)胖子當(dāng)著我的面吹牛妆偏,可吹牛的內(nèi)容都是我干的刃鳄。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼钱骂,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼叔锐!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起见秽,我...
    開(kāi)封第一講書人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤愉烙,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后解取,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體步责,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年禀苦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蔓肯。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡振乏,死狀恐怖蔗包,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情慧邮,我是刑警寧澤调限,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布舟陆,位于F島的核電站,受9級(jí)特大地震影響耻矮,放射性物質(zhì)發(fā)生泄漏秦躯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一淘钟、第九天 我趴在偏房一處隱蔽的房頂上張望宦赠。 院中可真熱鬧,春花似錦米母、人聲如沸勾扭。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)妙色。三九已至,卻和暖如春慧耍,著一層夾襖步出監(jiān)牢的瞬間身辨,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工芍碧, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留煌珊,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓泌豆,卻偏偏與公主長(zhǎng)得像定庵,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子踪危,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容