国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

必須了解的mysql三大日志-binlog、redo log和undo log

這篇具有很好參考價值的文章主要介紹了必須了解的mysql三大日志-binlog、redo log和undo log。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

一,前言

MySQL實現(xiàn)事務(wù)、集群的主從復(fù)制,底層都離不開日志,所以日志是MySQL的精華所在。只有了解MySQL日志,才算是徹底搞懂MySQL
本文主要講述MySQL的三大日志系統(tǒng),Redo Log(重做日志)、Undo Log(恢復(fù)日志)、Bin Log(備份日志)

二,binlog-備份日志

1,作用

Bin Log記錄的是邏輯日志,即原始的SQL語句,是MySQL自帶的。
作用: 數(shù)據(jù)備份和主從同步。

2,使用場景

在實際應(yīng)用中,binlog的主要使用場景有兩個,分別是主從復(fù)制和數(shù)據(jù)恢復(fù)。

  • 主從復(fù)制:在Master端開啟binlog,然后將binlog發(fā)送到各個Slave端,Slave端重放binlog從而達(dá)到主從數(shù)據(jù)一致。
  • 數(shù)據(jù)恢復(fù):通過使用mysqlbinlog工具來恢復(fù)數(shù)據(jù)。

3,日志形式

Bin Log共有三種日志格式,可以binlog_format配置參數(shù)指定
必須了解的mysql三大日志-binlog、redo log和undo log

4,binlog刷盤時機(jī)

對于InnoDB存儲引擎而言,只有在事務(wù)提交時才會記錄biglog,此時記錄還在內(nèi)存中,那么biglog是什么時候刷到磁盤中的呢?mysql通過sync_binlog參數(shù)控制biglog的刷盤時機(jī),取值范圍是0-N:

  • 0:不去強(qiáng)制要求,由系統(tǒng)自行判斷何時寫入磁盤;
  • 1:每次commit的時候都要將binlog寫入磁盤;
  • N:每N個事務(wù),才會將binlog寫入磁盤。

從上面可以看出,sync_binlog最安全的是設(shè)置是1,這也是MySQL 5.7.7之后版本的默認(rèn)值。但是設(shè)置一個大一些的值可以提升數(shù)據(jù)庫性能,因此實際情況下也可以將值適當(dāng)調(diào)大,犧牲一定的一致性來獲取更好的性能。

三,redo log-重做日志

1,概念

redo log包括兩部分:一個是內(nèi)存中的日志緩沖(redo log buffer),另一個是磁盤上的日志文件(redo log file)。mysql每執(zhí)行一條DML語句,先將記錄寫入redo log buffer,后續(xù)某個時間點(diǎn)再一次性將多個操作記錄寫到redo log file。這種先寫日志,再寫磁盤的技術(shù)就是MySQL里經(jīng)常說到的WAL(Write-Ahead Logging) 技術(shù)

2,為什么需要redo log

  • 事務(wù)的四大特性里面有一個是持久性,具體就是只要事務(wù)提交成功,數(shù)據(jù)庫做的修改就被永久保存下來了,不可能因為任何原因再回到原來的狀態(tài)。那么mysql是如何保證持久性的呢?最簡單的做法是在每次事務(wù)提交的時候,將該事務(wù)涉及修改的數(shù)據(jù)頁全部刷新到磁盤中
  • 但是這么做會有嚴(yán)重的性能問題,主要體現(xiàn)在兩個方面:
    (1)因為Innodb是以頁為單位進(jìn)行磁盤交互的,而一個事務(wù)很可能只修改一個數(shù)據(jù)頁里面的幾個字節(jié),這個時候?qū)⑼暾臄?shù)據(jù)頁刷到磁盤的話,太浪費(fèi)資源了
    (2)一個事務(wù)可能涉及修改多個數(shù)據(jù)頁,并且這些數(shù)據(jù)頁在物理上并不連續(xù),使用隨機(jī)IO寫入性能太差
  • 因此mysql設(shè)計了redo log,具體來說就是只記錄事務(wù)對數(shù)據(jù)頁做了哪些修改

3,日志形式

redo log實際上記錄數(shù)據(jù)頁的變更,而這種變更記錄是沒必要全部保存,因此redo log實現(xiàn)上采用了大小固定,循環(huán)寫入的方式,當(dāng)寫到結(jié)尾時,會回到開頭循環(huán)寫日志

4,redo log與binlog區(qū)別

必須了解的mysql三大日志-binlog、redo log和undo log

四,undo log-回滾日志

1,undo log的內(nèi)容和作用

undo log記錄的是邏輯日志,也就是sql語句
比如:當(dāng)我們執(zhí)行一條insert語句時,Undo Log就記錄一條相反的delete語句。
作用:

  • 回滾事務(wù)時,恢復(fù)到修改前的數(shù)據(jù)。

  • 實現(xiàn) MVCC(多版本并發(fā)控制,Multi-Version Concurrency Control) 。

  • MySQL事務(wù)中原子性就是使用Undo Log實現(xiàn)的。

2,mysql的日志

MySQL的日志(log)主要包括以下幾種類型:文章來源地址http://www.zghlxwxcb.cn/news/detail-452382.html

  • 錯誤日志(Error Log):記錄MySQL服務(wù)器出現(xiàn)錯誤的信息,如非法用戶連接、語法錯誤等。
  • 二進(jìn)制日志(Binary Log):記錄MySQL服務(wù)器執(zhí)行的所有修改數(shù)據(jù)的操作語句,如INSERT、DELETE、UPDATE。
  • 慢查詢?nèi)罩荆⊿low Query Log):記錄查詢運(yùn)行時間超過指定閾值(slow_query_log_threshold)的SQL語句。
  • 查詢?nèi)罩荆≦uery Log):記錄所有客戶端與MySQL服務(wù)器交互的命令,包括查詢和修改等操作。
  • 事務(wù)日志(Transaction Log):記錄所有接收到的SQL語句,可以用于回滾和恢復(fù)。
  • 中繼日志(Relay Log):主要用于MySQL的主從復(fù)制機(jī)制,用于將主服務(wù)器的二進(jìn)制日志復(fù)制到從服務(wù)器上。
    以上就是MySQL的常用日志類型。

到了這里,關(guān)于必須了解的mysql三大日志-binlog、redo log和undo log的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Mysql日志redo log、bin log、undo log 區(qū)別與作用及二階段提交

    Mysql日志redo log、bin log、undo log 區(qū)別與作用及二階段提交

    重做日志 作用:確保事務(wù)的持久性。防止在發(fā)生故障的時間點(diǎn),尚有臟頁未寫入磁盤,在重啟mysql服務(wù)的時候,根據(jù)redo log進(jìn)行重做,從而達(dá)到事務(wù)的持久性這一特性。 內(nèi)容:物理格式的日志,記錄的是物理數(shù)據(jù)頁面的修改的信息,其redo log是順序?qū)懭雛edo log file的物理文件中

    2024年02月03日
    瀏覽(104)
  • [MySQL]事務(wù)原理之redo log,undo log

    [MySQL]事務(wù)原理之redo log,undo log

    ??鍵盤敲爛,年薪30萬?? 目錄 一、log日志文件 ?? 事務(wù)執(zhí)行流程 ?? redo log ?? undo log 二、總結(jié) ??再來一遍ACID 1. 原子性: 原子性確保事務(wù)作為一個整體執(zhí)行,要么全部執(zhí)行成功,要么全部不執(zhí)行。 2. 一致性: 一致性確保事務(wù)將數(shù)據(jù)庫從一個狀態(tài)轉(zhuǎn)換為另一個狀態(tài)。 3.

    2024年02月04日
    瀏覽(23)
  • 02_重要的兩個日志 redo log 和 binlog

    02_重要的兩個日志 redo log 和 binlog

    MySQL 45 講Note: 課程專欄名稱:《MySQL實戰(zhàn)45講》課程 筆記參考:MYSQL45 講 想要理解這兩個日志 redo log 和 binlog ;我們需要對MySQL 的備份恢復(fù)機(jī)制有一個基本的了解。 之前你可能經(jīng)常聽 DBA 同事說,MySQL 可以恢復(fù)到半個月內(nèi)任意一秒的狀態(tài),帶著好奇的態(tài)度,這是怎樣做到的呢

    2024年02月07日
    瀏覽(20)
  • 【MySQL】change buffer,buffer pool,redo log,bin log,undo log的作用

    當(dāng)需要更新一個數(shù)據(jù)頁時,如果數(shù)據(jù)頁在內(nèi)存中就直接更新,而如果這個數(shù)據(jù)頁還沒有在內(nèi)存中的話,在不影響數(shù)據(jù)一致性的前提下,InnoDB 會將這些更新操作緩存在 change buffer 中,這樣就不需要從磁盤中讀入這個數(shù)據(jù)頁了。 在下次查詢需要訪問這個數(shù)據(jù)頁的時候,將數(shù)據(jù)頁

    2024年02月16日
    瀏覽(27)
  • 一文讀懂MySQL7大日志(slow、redo、undo、bin、relay、general、error)

    一文讀懂MySQL7大日志(slow、redo、undo、bin、relay、general、error)

    用于記錄執(zhí)行時間超過指定值的 SQL 語句的詳細(xì)信息,多用于調(diào)試和監(jiān)控。 因為開啟會略微影響性能,所以默認(rèn)沒有開啟,所以需要配置。 重做日志,記錄了數(shù)據(jù)庫中發(fā)生的每次修改,如增、刪、改、對數(shù)據(jù)頁的更改。這些修改被記錄在 redo 日志中,以便在數(shù)據(jù)庫崩潰或意外

    2024年03月09日
    瀏覽(31)
  • mysql三大日志—— 二進(jìn)制日志binlog

    binlog用于記錄數(shù)據(jù)庫執(zhí)行的寫入性操作,是一種 邏輯日志 ,binlog 處于服務(wù)層 ,通過 追加寫入 的方式以二進(jìn)制的形式保存在磁盤中。 binlog主要用于 主從復(fù)制 和數(shù)據(jù)恢復(fù)。 主從復(fù)制:在主機(jī)端開啟binlog日志管理,主機(jī)將binlog日志發(fā)送到各個從機(jī),從機(jī)來讀取binlog文件來做到

    2024年02月13日
    瀏覽(21)
  • MySQL三大日志——binlog、redoLog、undoLog詳解

    MySQL三大日志——binlog、redoLog、undoLog詳解

    日志是mysql數(shù)據(jù)庫的重要組成部分,記錄著數(shù)據(jù)庫運(yùn)行期間各種狀態(tài)信息,能幫助我們進(jìn)行很多容錯及分析工作,其中有三大日志與我們這些開發(fā)者息息相關(guān),本文將介紹binlog、redoLog、undoLog三種日志: 我們都知道,事務(wù)的四大特性里面有一個是持久性,具體來說就是只要事

    2024年02月02日
    瀏覽(16)
  • 一文帶你了解MySQL之undo日志

    一文帶你了解MySQL之undo日志

    我們在前邊學(xué)習(xí)事務(wù)的時候說過事務(wù)需要保證 原子性 ,也就是 事務(wù)中的操作要么全做,要么全不做 。但是有的時候事務(wù)會出現(xiàn)一些情況,比如: 情況一: 事務(wù)執(zhí)行過程中可能遇到各種錯誤,比如服務(wù)器本身的錯誤,操作系統(tǒng)錯誤,甚至是突然斷電導(dǎo)致的錯誤 情況二:程序

    2024年02月07日
    瀏覽(24)
  • 一文帶你了解MySQL之redo日志

    一文帶你了解MySQL之redo日志

    前言 本文以及接下來的幾篇文章將會頻繁的使用到我們前邊嘮叨的 InnoDB記錄行格式 、 頁面格式 、 索引原理 、 表空間的組成 等各種基礎(chǔ)知識,如果大家對這些東西理解的不透徹,那么閱讀下邊的文字可能會特別的些費(fèi)力,為保證您能正常的理解,請確保自己已經(jīng)掌握了我

    2024年02月08日
    瀏覽(20)
  • 【數(shù)據(jù)庫管理】④重做日志Redo Log

    重做日志(Redo log)是數(shù)據(jù)庫管理系統(tǒng)中的一種機(jī)制,主要作用包括: 提供事務(wù)的持久性支持:重做日志記錄了每個事務(wù)對數(shù)據(jù)庫所做的修改操作,以便在系統(tǒng)故障或崩潰時,通過重新執(zhí)行重做日志中未提交的事務(wù)來恢復(fù)數(shù)據(jù)。 支持?jǐn)?shù)據(jù)庫備份和恢復(fù):重做日志可以用于還原

    2023年04月08日
    瀏覽(86)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包