Mysql 日志(redolog, binlog, undoLog)

重做日志-redolog

是什么

innoDB存儲引擎層面的日志,它的作用是當 數據更新過程中數據庫發生異常導致提交的記錄丟失

為什么

mysql的基本存儲結構是頁(記錄都在頁里面),所以更新語句時,mysql需要先把要更新的語句找到,加載進內存(buffer pool),再修改對應的記錄,再寫會磁盤

此時就會面臨問題:

1、如果內存中的數據更新了,但是未落入磁盤,mysql掛了怎么辦?

2、每個請求都需要將數據立馬落入磁盤,速度會很慢,mysql可能會頂不住

因此 Innodb引入了redolog

怎么做,實現原理


?

redolog也是需要寫入磁盤的,但它是順序寫入的,順序io比隨機io快很多

目的:當我們修改了數據,寫完內存了,可能還未落入磁盤,數據庫掛掉了,此時可以根據redo log來恢復數據。redo log是順序io,所以寫入速度很快,記錄的是物理變化(xx頁做了xx修改),文件體積小,所以恢復速度也快
?

  • 內容:記錄的是物理數據頁面的修改信息(xx頁做了xx修改),其redo log是順序寫入redo log fail的物理文件中去的
  • 介紹一下:redolog又叫重做日志,是存儲引擎層面的日志(innoDb特有的日志),用于記錄事務操作的變化,記錄的是數據修改之后的值,不管事務是否提交都會記錄下來
  • 日志大小是固定的,即寫滿了之后會從頭開始循環寫
  • Innodb_log_file_size=100M(指定大小);Innodb_log_files_in_group=5(指定個數)
    ?

歸檔日志-binlog

binlog(歸檔日志):是mysql server層面的日志,屬于邏輯日志,是以二進制形式記錄的,記錄的是這個語句的原始邏輯(每條變更的sql語句),追加寫的方式,即一份日志文件寫到一定大小的時候會更換下一個文件,不會覆蓋。

  • 用于復制,在主從復制中,從庫利用主庫上的binlog進行傳播,實現主從同步
  • 用于數據庫基于時間點的還原

回滾日志-undolog

undo log:在數據的修改過程中,會記錄一條與當前操作相反的邏輯到undo log中,如果因為某些原因導致事務異常失敗了,可以借助undo log進行回滾,保證事務的完整性

  • 提供了回滾的作用,保證事務的原子性
  • mvcc的實現


?

redolog 和bin log的區別

bin log

redo log

實現層面

mysql server層實現的

innoDB存儲引擎層面的

記錄內容

記錄的是邏輯日志(sql語句)

記錄的是物理日志(xx頁做了xx修改)

寫入方式

追加寫入,一個文件寫完可以換一個文件接著寫

循環寫,空間大小固定,會覆蓋

作用

用于主從復制,恢復數據

持久化

提交實際

事務提交時記錄

事務開始時記錄每次的變更信息

redolog是如何保證crash-safe的?

crash-safe是通過redo log的write ops和checkpoint機制來保證的

WAL(write ahead log)日志先行技術:先寫日志,再寫磁盤。對于數據更新操作,先寫入redo log

redo log有兩個關鍵的指針:write ops和checkpoint。write ops是當前記錄的位置,一邊寫一邊后移,無法移動的時候就回到開頭。checkpoint是當前要擦除的位置,也是往后推移并且循環的,擦除記錄前要把數據更新到數據文件。write ops和checkpoint之間還空著的地方,可以用來記錄新的操作,如果write ops追上了checkpoint,此時不能進行新的更新操作,需要停下來先擦除一部分內容
?

redolog 能保證crash-safe,還需要bin log嗎?

看場景

  • 主從模式下,binlog是需要的,因為從庫同步主庫的數據依賴于bin log
  • 單機模式下,如果不考慮基于某個時間點數據的還原,可以不需要bin log。但是萬一需要恢復某個時間點的數據,是做不到的,所以建議一直開啟bin log

簡言之,red log只有innodb有,別的存儲引擎沒有。redo log是循環寫的,不持久保存,所以還是需要binlog。


?


?


?


?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/10887.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/10887.shtml
英文地址,請注明出處:http://en.pswp.cn/web/10887.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Softing工業推出的edgeConnector將Allen-Bradley控制器集成到工業邊緣應用中

2024年4月17日(哈爾),Softing宣布擴展其基于Docker的edgeConnector產品系列,推出了新軟件模塊edgeConnector Allen Bradley PLC,可方便用戶訪問來自ControlLogix和CompactLogix控制器數據。 (edgeConnector…

Linux提權--定時任務--打包配合 SUID(本地)文件權限配置不當(WEB+本地)

免責聲明:本文僅做技術交流與學習... 目錄 定時任務 打包配合 SUID-本地 原理: 背景: 操作演示: 分析: 實戰發現: 定時任務 文件權限配置不當-WEB&本地 操作演示: 定時任務 打包配合 SUID-本地 原理: 提權通過獲取計劃任務執行文件信息進行提權 . 1、相對路徑和…

Rust中忽略JSON反序列化時的不必要字段

在Rust中處理JSON數據時,經常會遇到JSON數據中包含一些在目標數據結構中不存在的字段的情況。如果你使用的是serde和serde_json這兩個流行的庫來處理JSON,那么有一些簡單的方法可以忽略這些不必要的字段。 默認行為:忽略未知字段 在Rust中&…

人工智能專業(科普)

Ⅰ 簡介 人工智能(Artificial Intelligence)是中國普通高等學校本科專業。人工智能,是一個以計算機科學為基礎,由計算機、心理學、哲學等多學科交叉融合的交叉學科、新興學科,研究、開發用于模擬、延伸和擴展人的智能…

在vue3中,如何優雅的使用echarts之實現大屏項目

前置知識 效果圖 使用技術 Vue3 Echarts Gasp Gasp:是一個 JavaScript動畫庫,它支持快速開發高性能的 Web 動畫。在本項目中,主要是用于做軌跡運動 所需安裝的插件 npm i echarts npm i countup.js 數字滾動特效 npm i gsap javascript動畫庫 np…

MogDBopenGauss查詢重寫規則lazyagg

在MogDB&openGauss中,參數rewrite_rule用于控制查詢重寫,本文介紹查詢重寫規則lazyagg 在未設置rewrite_rulelazyagg的情況下,子查詢中有GROUP BY會先進行GROUP BY lazyagg表示延遲聚合運算,目的是消除子查詢中的聚合運算&…

寶塔面板怎么解決nginx跨域問題

1.找到寶塔的nginx配置文件 寶塔有一點不同,nginx配置文件不在nginx的安裝目錄中,應當去/www/server/panel/vhost/nginx找到 2.添加你要跨域的地址 location /api {proxy_pass http://localhost:8080;proxy_set_header Host $host;proxy_set_header X-…

維護祖傳項目Tomcat部署war包

文章目錄 1. 安裝tomcat2. 解決Tomcat啟動日志亂碼3. idea配置啟動war包 1. 安裝tomcat 選擇免安裝版本,只需要在系統變量里面配置一下。 新增系統變量 CATALINA_HOME D:\Users\common\tomcat\apache-tomcat-8.5.97-windows-x64\apache-tomcat-8.5.97 編輯追加Path…

FPGA SDRAM讀寫控制器

感謝鄧堪文大佬 ! SDRAM 同步動態隨機存取內存(synchronousdynamic randon-access menory,簡稱SDRAM)是有一個同步接口的動態隨機存取內存(DRAM)。通常DRAM是有一個異步接口的,這樣它可以隨時響…

Node.js基礎:從入門到實戰

初識 Node.js 與內置模塊 (初識) 1、知道什么是node.js 2、知道node.js可以做什么 3、node.js 中js的組成部分 (內置模塊) 4、用 fs 模塊讀寫操作文件 5、使用 path 模塊處理路徑 6、使用http 模塊寫一個基本的web服務器 初識 N…

第1章 信息系統綜合知識 1.4 IT戰略

第1章 信息系統綜合知識 1.4 IT戰略 1.4.1 IT戰略的內涵 IT戰略,是在診斷和評估企業信息化現狀的基礎上,制定和調整企業信息化的指導綱領,爭取企業以最合適的成本,去做最合適的信息化工作。 IT戰略制定步驟: 定方向:明確遠景…

設計模式——模板設計模式(Template Method)

模板設計-base 什么是模板? 舉個簡單的例子,以AABB的格式,寫出一個詞語,你可能會想到,明明白白,干干凈凈等, 這個AABB就是一個模板,對模板心中有了一個清晰的概念之后,…

docker————docker的安裝

目錄 docker的安裝 1、安裝yum-utils工具 2、安裝yum倉庫 3、安裝docker引擎 4、設置開機啟動,并立即啟動 5、測試 docker的安裝 docker的官網Docker Docs 我才用的linux版本是rocky,使用的是最小安裝 1、安裝yum-utils工具 [rootbogon yum.rep…

環境變量(全)

概念 環境變量(environment variables)一般是指在操作系統中用來指定操作系統運行環境的一些參數 如:我們在編寫C/C代碼的時候,在鏈接的時候,從來不知道我們的所鏈接的動態靜態庫在哪里,但是照樣可以鏈接成功,生成可執…

今日arXiv最熱NLP大模型論文:揭露大語言模型短板,北京大學提出事件推理測試基準

人工智能領域又一里程碑時刻!北京大學、北京智源人工智能研究院等機構聯合推出大型事件推理評測基準 。這是首個同時在知識和推理層面全面評估大模型事件推理能力的數據集。 總所周知,事件推理需要豐富的事件知識和強大的推理能力,涉及多種推…

consul啟動Error_server_rejoin_age_max (168h0m0s) - consider wiping your data dir

consul 啟動報錯: consul[11880]: 2024-05-12T08:37:51.095-0400 [ERROR] agent: startup error: error"refusing to rejoin cluster because server has been offline for more than the configured server_rejoin_age_max (168h0m0s) - consider wiping you…

【GD32】02-ADC模擬數字轉換器

ADC 在電子和通信技術中,ADC(模擬數字轉換器)是一種將模擬信號轉換為數字信號的電子設備。這種轉換是電子系統中非常關鍵的一個環節,因為數字信號更易于處理、存儲和傳輸。ADC的工作原理通常包括采樣、保持、量化和編碼等步驟。采…

http協議 tomcat如何訪問資源 servlet理論介紹

tomcat介紹 bin是啟動命令; conf是配置,可以修改端口號; lib是依賴的jar包; logs是日志 webapps是重點,在這里新建我們自己的javaWeb項目 tomcat如何訪問資源 tomcat通過統一資源定位符(URL)來…

鄉村振興與農村基礎設施建設:加大農村基礎設施建設投入,提升農村公共服務水平,改善農民生產生活條件,構建宜居宜業的美麗鄉村

一、引言 鄉村振興是我國現代化進程中的重要戰略,而農村基礎設施建設則是鄉村振興的基石。隨著城市化進程的加快,農村基礎設施建設滯后的問題日益凸顯,成為制約鄉村發展的瓶頸。因此,加大農村基礎設施建設投入,提升農…

打造一套在線教育系統,如何在教育這個慢行業打造品牌?

品牌對于教育行業非常重要,很多從事教育行業的朋友一直想塑造屬于自己的品牌形象,但做起來卻沒那么容易。因為教育行業相對來說是一個慢行業,用戶必須看到效果才會認可,而教育的效果往往需要經過長期的學習才能看到。 我覺得&…