精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

基于Redo Log和Undo Log的MySQL崩潰恢復流程

數據庫 MySQL
當我們查詢數據的時候,會先去Buffer Pool中查詢。如果Buffer Pool中不存在,存儲引擎會先將數據從磁盤加載到Buffer Pool中,然后將數據返回給客戶端;同理,當我們更新某個數據的時候,如果這個數據不存在于Buffer Pool,同樣會先數據加載進來,然后修改修改內存的數據。被修改過的數據會在之后統一刷入磁盤。

[[378480]]

本文轉載自微信公眾號「SH的全棧筆記」,作者SH 。轉載本文請聯系SH的全棧筆記公眾號。  

黑盒下的更新數據流程

當我們查詢數據的時候,會先去Buffer Pool中查詢。如果Buffer Pool中不存在,存儲引擎會先將數據從磁盤加載到Buffer Pool中,然后將數據返回給客戶端;同理,當我們更新某個數據的時候,如果這個數據不存在于Buffer Pool,同樣會先數據加載進來,然后修改修改內存的數據。被修改過的數據會在之后統一刷入磁盤。

MySQL 奔潰恢復

這個過程看似沒啥問題,實則不講武德。假設我們修改Buffer Pool中的數據成功,但是還沒來得及將數據刷入磁盤MySQL就掛了怎么辦?按照上圖的邏輯,此時更新之后的數據只存在于Buffer Pool中,如果此時MySQL宕機了,這部分數據將會永久的丟失;

再者,我更新到一半突然發生錯誤了,想要回滾到更新之前的版本,該怎么辦?那不完犢子嗎,連數據持久化的保證、事務回滾都做不到還談什么崩潰恢復?

Redo Log & Undo Log

而通過MySQL能夠實現崩潰恢復的事實來看,MySQL必定實現了某些騷操作。沒錯,這就是接下來我們要介紹的另外的兩個關鍵功能,Redo Log和Undo Log。

這兩種日志是屬于InnoDB存儲引擎的日志,和MySQL Server的Binlog不是一個維度的日志。

Redo Log 記錄了此次事務「完成后」的數據狀態,記錄的是更新之「后」的值

Undo Log 記錄了此次事務「開始前」的數據狀態,記錄的是更新之「前」的值

所以這兩種日志有明顯的區別,我用一種更加通俗的例子來解釋一下這兩種日志。

Redo Log就像你在命令行敲了很長的命令,敲回車執行,結果報錯了。此時我們只需要再敲個↑就會拿到上一條命令,再執行一遍即可。

Undo Log就像你剛剛在Git中Commit了一下,然后再做一個較為復雜的改動,但是改著改著你的心態崩了,不想要剛剛的改動了,于是直接git reset --hard $lastCommitId回到了上一個版本。

實現日志后的更新流程

有了Redo Log和Undo Log,我們再將上面的那張圖給完善一下。

MySQL 崩潰恢復

首先,更新數據還是會判斷數據是否存在于Buffer Pool中,不存在則加載。上面我們提到了回滾的問題,在更新Buffer Pool中的數據之前,我們需要先將該數據事務開始之前的狀態寫入Undo Log中。假設更新到一半出錯了,我們就可以通過Undo Log來回滾到事務開始前。

然后執行器會更新Buffer Pool中的數據,成功更新后會將數據最新狀態寫入Redo Log Buffer中。因為一個事務中可能涉及到多次讀寫操作,寫入Buffer中分組寫入,比起一條條的寫入磁盤文件,效率會高很多。

redo-log-buffer

那為什么Undo Log不也搞一個Undo Log Buffer,也給Undo Log提提速,雨露均沾?那我們假設有這個一個Buffer存在于InnoDB,將事務開始前的數據狀態寫入了Undo Log Buffer中,然后開始更新數據。

突然啪一下,很快啊,MySQL由于意外進程退出了,此時會發生一件很尷尬的事情,如果更新的數據一部分已經刷回磁盤了,但是此時事務沒有成功需要回滾,你發現Undo Log隨著進程退出一起沒了,此時就沒有辦法通過Undo Log去做回滾。

那如果剛剛更新完內存,MySQL就掛了呢?此時Redo Log Buffer甚至都可能沒有寫入,即使寫入了也沒有刷到磁盤,Redo Log也丟了。

其實無所謂,因為意外宕機,該事務沒有成功,既然事務事務沒有成功那就需要回滾,而MySQL重啟后會讀取磁盤上的Redo Log文件,將其狀態給加載到Buffer Pool中。而通過磁盤Redo Log文件恢復的狀態和宕機前事務開始前的狀態是一樣的,所以是沒有影響的。然后等待事務commit了之后就會將Redo Log和Binlog刷到磁盤。

流程中仍然存在的問題

你可能認為到這一步就完美了,事實上則不然。假設我們在將Redo Log刷入到磁盤之后MySQL突然宕機了,binlog還沒有來得及寫入。此時重啟,Redo Log所代表的狀態就和Binlog所代表的狀態不一致了。Redo Log恢復到Buffer Pool中的某行的A字段是3,但是任何監聽其Binlog的數據庫讀取出來的數據確是2。

即使Redo Log和Binlog都寫入文件了,但是這個時候MySQL所在的物理機活著VM宕機了,日志仍然會丟失。現在的OS在你寫入文件的時候,會先將改動的內容寫入的OS Cache中,以此來提高效率。然后根據策略(受你配置的參數的影響)來將OS Cache中的數據刷入磁盤。

基于2PC的一致性保障

從這你可以發現一個關鍵的問題,那就是必須保證Redo Log和Binlog在事務提交時的數據一致性,要么都存在,要么都不存在。MySQL是通過 **2PC(two-phase commit protocol)**來實現的。

MySQL 崩潰恢復

簡單介紹一下2PC,它是一種保證分布式事務數據一致性的協議,它中文名叫兩階段提交,它將分布式事務的提交拆分成了2個階段,分別是Prepare和Commit/Rollback。

就向兩個拳擊手開始比賽之前,裁判會在中間確認兩個選手的狀態,類似于問你準備好了嗎?得到確認之后,裁判才會說Fight。

裁判詢問選手的狀態,對應的是第一階段Prepare;得到了肯定的回答之后,裁判宣布比賽正式開始,對應的是第二階段Commit,但是如果有一方選手沒有準備好,裁判會宣布比賽暫停,此時對應的是第一階段失敗的情況,第二階段的狀態會變為Rollback。裁判就對應2PC中的協調者Coordinator,選手就對應參與者Participant。

下面我們通過一張圖來看一下整個流程。

2PC刷入磁盤

Prepare階段,將Redo Log寫入文件,并刷入磁盤,記錄上內部XA事務的ID,同時將Redo Log狀態設置為Prepare。Redo Log寫入成功后,再將Binlog同樣刷入磁盤,記錄XA事務ID。

Commit階段,向磁盤中的Redo Log寫入Commit標識,表示事務提交。然后執行器調用存儲引擎的接口提交事務。這就是整個過程。

驗證2PC機制的可用性

這就是2PC提交Redo Log和Binlog的過程,那在這個期間發生了異常,2PC這套機制真的能保證數據一致性嗎?

假設Redo Log刷入成功了,但是還沒來得及刷入Binlog MySQL就掛了。此時重啟之后會發現Redo Log并沒有Commit標識,此時根據記錄的XA事務找到這個事務,進行回滾。

如果Redo Log刷入成功,而且Binlog也刷入成功了,但是還沒有來的及將Redo Log從Prepare改成Commit MySQL就掛了,此時重啟會發現雖然Redo Log沒有Commit標識,但是通過XID查詢到的Binlog卻已經成功刷入磁盤了。

此時,雖然Redo Log沒有Commit標識,MySQL也要提交這個事務。因為Binlog一旦寫入,就可能會被從庫或者任何消費Binlog的消費者給消費。如果此時MySQL不提交事務,則可能造成數據不一致。而且目前Redo Log和Binlog從數據層面上,其實已經Ready了,只是差個標志位。

 

責任編輯:武曉燕 來源: SH的全棧筆記
相關推薦

2024-06-11 00:00:02

MySQL數據庫系統

2020-08-20 12:10:42

MySQL日志數據庫

2024-05-30 08:03:17

2023-11-23 13:17:39

MySQL?數據庫

2025-06-06 07:02:43

2024-05-28 00:10:00

JavaMySQL數據庫

2025-01-15 13:19:09

MySQL日志事務

2025-10-09 02:22:00

MySQLMVCC庫存數量

2025-01-20 08:20:00

redo logMySQL數據庫

2024-12-16 00:00:05

MySQL二進制數據

2025-08-11 09:08:41

2024-03-14 14:18:58

MySQL業務設計事務

2021-07-28 08:32:03

MySQLRedo存儲

2021-10-04 09:23:30

Redo日志內存

2021-05-28 11:18:50

MySQLbin logredo log

2010-01-06 09:30:51

Oracle Redo

2022-08-26 10:11:26

MySQL數據庫

2022-10-12 08:01:08

MySQL日志數據庫

2020-11-11 07:32:18

MySQL InnoDB 存儲

2011-08-30 10:30:50

OracleUNDO LOG日志回
點贊
收藏

51CTO技術棧公眾號

亚洲欧美三级伦理| 国产精品女人毛片| 欧美一级高清免费播放| 亚洲欧美va天堂人熟伦| 日韩精品一区二区三区免费视频| 一区二区在线看| 久久亚洲免费| 国产乱淫av免费| 国产九九精品| 久久中国妇女中文字幕| 搡老熟女老女人一区二区| 亚洲我射av| 色欧美乱欧美15图片| 中文字幕日韩一区二区三区不卡| 全国男人的天堂网| 韩国av一区二区| 4438全国亚洲精品在线观看视频| 999精品视频在线观看播放| 开心激情综合| 91精品国产美女浴室洗澡无遮挡| 国产精品免费成人| 日本三级在线观看网站 | 国产精品无码一区二区三区免费| 免费成人黄色网| 日韩欧美中文字幕在线观看| 91视频 - 88av| 日本高清视频在线播放| 久久天天做天天爱综合色| 91精品中文在线| 中文字幕黄色片| 亚洲精品1234| 欧美成人免费网| 91av手机在线| 日韩精品一区二区久久| 亚洲人成网站在线播| 91精品又粗又猛又爽| 91九色成人| 欧美日韩免费一区二区三区视频| 欧美日韩在线中文| 成人免费图片免费观看| 一区二区久久久久久| 91制片厂免费观看| 黄色网页在线免费看| 国产精品国产精品国产专区不蜜| 欧美裸体网站| 可以在线观看的黄色| 337p粉嫩大胆色噜噜噜噜亚洲| av免费精品一区二区三区| 国产精品久久无码一三区| 久久精品国产成人一区二区三区| 国产精品极品美女在线观看免费| 日韩免费视频一区二区视频在线观看| 亚洲国产裸拍裸体视频在线观看乱了中文 | 欧美成人一区二免费视频软件| 最新的欧美黄色| 久久久免费看片| 成人区精品一区二区婷婷| 中文字幕九色91在线| 9.1片黄在线观看| 久久福利影院| 久久综合五月天| 久久久久成人精品无码| 国产精品大片免费观看| 欧美国产日本在线| 日产精品久久久久久久| 国产日韩综合| 热门国产精品亚洲第一区在线| av大片在线免费观看| 久久精品123| 国产精品国模在线| 一区二区美女视频| 国产成人在线看| 激情五月综合色婷婷一区二区| 日本在线丨区| 亚洲国产精品成人久久综合一区| 一区二区视频国产| 美女网站视频在线| 欧美午夜精品伦理| 天天爽夜夜爽一区二区三区| 99re8精品视频在线观看| 日韩欧美电影一二三| 加勒比精品视频| 欧美先锋资源| 欧美丰满少妇xxxx| 日本视频免费观看| 黑人巨大精品欧美黑白配亚洲| 91入口在线观看| 日韩有码第一页| 欧美国产精品久久| 国产xxxx振车| 成人性生活av| 欧美一区二区三区视频| 亚洲第一香蕉网| 亚洲天堂免费| 日本成人免费在线| 国产视频一区二区三| 91亚洲资源网| 不卡中文字幕在线| 高清视频在线观看三级| 欧美日韩成人激情| 久久一区二区电影| 欧美xxxx中国| 91a在线视频| 国产一区二区小视频| 99久久精品99国产精品| 一区二区不卡视频| 九色porny视频在线观看| 欧美日韩久久久| 成人午夜精品无码区| 日韩在线精品| 欧美在线www| 超碰在线播放97| 国产精品伦理在线| 国产午夜福利视频在线观看| 久久av网站| 中文字幕国产精品| 日韩一区二区视频在线| 成人午夜精品在线| 咪咪色在线视频| 欧美精选视频一区二区| 亚洲国产成人在线播放| 麻豆视频在线观看| 久久精品99久久久| 欧美下载看逼逼| 亚洲国产欧美日本视频| 欧美白人最猛性xxxxx69交| 波多野结衣家庭教师在线观看| 国产欧美高清| 国产精品久久久久久久久婷婷| 欧美另类极品| 欧美午夜片在线观看| 97超碰在线免费观看| 亚洲国产免费看| 99re6热在线精品视频播放速度| 免费黄色电影在线观看| 欧美在线啊v一区| 人人妻人人藻人人爽欧美一区| 99精品欧美| 国产精品制服诱惑| 成人爽a毛片免费啪啪动漫| 日韩一二三四区| 青青草手机在线观看| 国产麻豆精品视频| 国内外成人激情免费视频| 亚洲成a人片777777久久| 午夜精品福利久久久| 成人免费播放视频| 性欧美欧美巨大69| 国产成人精品网站| 国产精品毛片一区二区三区四区| 欧美日韩国产精品| 国产精品无码久久久久久| 国产亚洲精品bv在线观看| 韩日午夜在线资源一区二区| 国产99在线观看| 日韩黄色高清视频| 久久久久噜噜噜亚洲熟女综合| 国产一区二区三区观看| 成人av在线不卡| 美国成人xxx| 欧美综合一区第一页| 日韩大胆人体| 欧美自拍偷拍午夜视频| 国产18无套直看片| 黄一区二区三区| 人妻互换免费中文字幕| 国产一区二区三区亚洲| 欧美专区在线播放| 欧美日韩欧美| 亚洲精品一区二区三区四区高清| 久久久久亚洲天堂| 99re热视频这里只精品| 国产成人av影视| 97久久夜色精品国产| 成人av免费在线看| 92国产精品| 精品国产一区二区三区在线观看| 91麻豆国产视频| 亚洲午夜精品久久久久久久久| 国产老熟女伦老熟妇露脸| 日韩精品高清不卡| 免费观看亚洲视频| 伊人久久大香线蕉无限次| 国产精品三级美女白浆呻吟| 性爱视频在线播放| 亚洲女人初尝黑人巨大| 国产又粗又猛视频| 午夜视频在线观看一区二区三区| 亚洲综合色一区| 国产乱色国产精品免费视频| 337p粉嫩大胆噜噜噜鲁| 93在线视频精品免费观看| 国产精品视频入口| 国产成人a视频高清在线观看| 欧美福利在线观看| 黄色av网站在线看| 欧美成va人片在线观看| 中文在线免费看视频| 亚洲一区二区三区四区五区中文 | 国产免费一区二区三区免费视频| 亚洲成人一区二区在线观看| ass极品国模人体欣赏| 成人高清视频在线观看| 久久国产精品国产精品| 国产精品久久久久久模特| 婷婷视频在线播放| 狠狠综合久久av一区二区蜜桃| 91麻豆蜜桃| 日日夜夜亚洲| 国产99久久精品一区二区 夜夜躁日日躁 | 久久久不卡影院| 性折磨bdsm欧美激情另类| 欧美aaaaaa午夜精品| 日本不卡在线观看视频| 欧美精品一级| 二级片在线观看| 精品久久久久久久久久久下田 | 性xxxx搡xxxxx搡欧美| 91精品久久久久久久99蜜桃| 欧美一级淫片免费视频黄| 亚洲高清久久久| 美女福利视频在线观看| 中文字幕va一区二区三区| 玖玖爱在线观看| 成人av免费观看| 在线免费黄色小视频| 久久er精品视频| jizz欧美激情18| 丝袜亚洲精品中文字幕一区| av网站在线观看不卡| 亚洲美女啪啪| 美女黄色免费看| 欧美视频福利| 99久热在线精品视频| 亚洲成人精品| 一级黄色免费在线观看| 久久婷婷蜜乳一本欲蜜臀| 水蜜桃一区二区三区| 国产剧情一区| 日韩和欧美的一区二区| 国产欧美日韩一区二区三区四区 | 天天射成人网| 一区不卡视频| 亚洲欧洲日韩| 警花观音坐莲激情销魂小说| 天天天综合网| 4444亚洲人成无码网在线观看| 中文字幕午夜精品一区二区三区| 中文字幕中文字幕一区三区| 91精品国产91久久综合| 黄色一级视频播放| 欧美日韩爆操| 欧美激情视频免费看| 国产一级一区二区| 情侣黄网站免费看| 日本不卡一二三区黄网| 日本不卡一区二区在线观看| 久久成人羞羞网站| 日本少妇一区二区三区| 成人夜色视频网站在线观看| 香港三日本8a三级少妇三级99| 不卡一区在线观看| 亚洲永久精品ww.7491进入| 国产偷国产偷亚洲高清人白洁| 国产精品高清无码在线观看| 国产精品入口麻豆原神| 国产一区二区三区在线视频观看| 夜夜操天天操亚洲| 偷偷操不一样的久久| 在线视频中文字幕一区二区| 在线观看中文字幕2021| 精品日韩成人av| 日本在线视频1区| 色av中文字幕一区| 免费污视频在线| 国产成人精品电影久久久| 少妇高潮一区二区三区99| 97视频中文字幕| 婷婷亚洲精品| 香蕉视频在线网址| 羞羞视频在线观看欧美| 奇米影视四色在线| 成人做爰69片免费看网站| 99久久人妻无码精品系列| 中文字幕视频一区二区三区久| 1024手机在线视频| 狠狠色狠狠色综合日日五| 毛片在线免费播放| 亚洲第一二三四五区| 邻居大乳一区二区三区| 欧美日本高清视频| 日韩一区二区三区在线免费观看| 91精品黄色| 精品久久久久久久| 精品视频在线观看一区| 老色鬼精品视频在线观看播放| 亚洲成年人av| 国产精品嫩草影院av蜜臀| 日韩字幕在线观看| 91精品蜜臀在线一区尤物| 黄色片免费在线| 国产69精品99久久久久久宅男| 精品国产欧美日韩一区二区三区| 国产成人亚洲欧美| 日韩理论电影院| 精品欧美一区免费观看α√| 国产剧情一区在线| 长河落日免费高清观看| 精品久久久久久久久久| 99久久亚洲精品日本无码| 亚洲欧美日韩爽爽影院| 乱插在线www| 成人中心免费视频| 国产探花在线精品| 91成人在线观看喷潮教学| 国产精品456露脸| av黄色免费在线观看| 在线免费观看日韩欧美| 五月天激情开心网| 欧美夫妻性生活xx| 日韩不卡在线视频| 在线视频福利一区| 免费观看久久久4p| 久久美女免费视频| 欧美三级免费观看| 五月婷婷丁香网| 国自在线精品视频| 国产一区二区在线视频你懂的| 青青视频免费在线| 国产一区二区在线免费观看| 老司机精品免费视频| 日韩欧美在线视频| 黄色国产在线| 国产成人精品视频在线观看| 嫩草一区二区三区| 久久无码高潮喷水| xf在线a精品一区二区视频网站| 国产精品成人aaaa在线| 欧美成人一区二区三区片免费 | 欧美黑人激情| 国产精品综合不卡av| 成人情趣视频| 天堂在线中文在线| 亚洲三级电影网站| www.国产麻豆| 欧美—级a级欧美特级ar全黄| 日韩有吗在线观看| 国产制服91一区二区三区制服| 国产精品综合在线视频| 九九热国产精品视频| 日韩欧美精品在线视频| 伦理在线一区| 久久久亚洲综合网站| 亚洲一区图片| 中字幕一区二区三区乱码| 欧美视频自拍偷拍| 免费不卡视频| 97超碰人人模人人爽人人看| 亚洲网址在线| 国产福利短视频| 欧美综合一区二区| 精品国产白色丝袜高跟鞋| 91国产丝袜在线放| 最新成人av网站| 欧美图片一区二区| 欧美日韩亚洲综合一区二区三区| 久cao在线| 国产一区二区精品免费| 久久久夜夜夜| 91传媒免费观看| 精品成人一区二区三区| 国模套图日韩精品一区二区| 色综合666| 国产99久久久国产精品潘金 | 欧美疯狂做受xxxx富婆| 日韩123区| 日韩久久久久久久| 国产成人在线观看免费网站| 中文字幕亚洲精品一区| 色阁综合伊人av| 91成人在线精品视频| 欧美日韩国产精品激情在线播放| 欧美国产精品一区二区三区| 国产浮力第一页| 日韩av观看网址| 自拍偷拍欧美专区| 韩国女同性做爰三级| 日韩亚洲电影在线| 欧美舌奴丨vk视频| 狠狠噜天天噜日日噜| 国产三级精品三级| 亚洲精品一区二区三区新线路 | 久久免费精品| 久久精品香蕉视频| 亚洲影院在线观看| 91吃瓜网在线观看| 久久精品aaaaaa毛片| 国产一区二区按摩在线观看| 欧美黑人一区二区| 欧美另类极品videosbest最新版本|