日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql innodb log_教你如何理解mysql中的innoDB log

發(fā)布時間:2023/12/4 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql innodb log_教你如何理解mysql中的innoDB log 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言:之前一直弄不清楚mysql里面bin log和innodb log文件的區(qū)別,在腦子里面一直有個疑問binlog日志文件已經(jīng)可以用來進行數(shù)據(jù)庫的日志備份恢復(fù)了,怎么又多了一個redo log文件了。相信也有很多人有這個疑惑,現(xiàn)在把整個過程文檔整理出來,希望對大家有所幫忙。

如果對Oracle很了解,那么在整個學(xué)習(xí)innoDB log的時候,可以把聯(lián)機重做日志的那套理論套在學(xué)習(xí)innoDB log上面,幾乎是一樣的;

一、innodb log的基礎(chǔ)知識

innodb log顧名思義:即innodb存儲引擎產(chǎn)生的日志,也可以稱為重做日志文件,默認在innodb_data_home_dir下面有兩個文件ib_logfile0和ib_logfile1。MySQL官方手冊中將這兩個文件叫文InnoDB存儲引擎的日志文件;

innodb log的作用:當MySQL的實例和介質(zhì)失敗的時候,Innodb存儲引擎就會使用innodb log文件進行恢復(fù),保證數(shù)據(jù)庫的完整性;

innodb log的寫原理:(請容許我再放下InnoDB的原理圖,并且建議把這張圖看到吐)

看紅色框框的那部分

每個InnDB存儲引擎至少有1個重做日志文件組(group),每個文件組下至少有兩個重做日志文件,默認的為ib_logfile0、ib_logfile1;

日志組中每個重做日志的大小一致,并循環(huán)使用;

InnoDB存儲引擎先寫重做日志文件,當文件滿了的時候,會自動切換到日志文件2,當重做日志文件2也寫滿時,會再切換到重做日志文件1;

為了保證安全和性能,請設(shè)置每個重做日志文件設(shè)置鏡像,并分配到不同的磁盤上面;

(發(fā)現(xiàn)以上特性跟ORACLE的連接重做日志文件簡直是一樣的)

二、innodb log的相關(guān)參數(shù)

運行腳本:show variables like 'innodb%log%'; 查看重做日志的相關(guān)參數(shù)

mysql> show variables like 'innodb%log%';

常用設(shè)置的參數(shù)有:

innodb_mirrored_log_groups? 鏡像組的數(shù)量,默認為1,沒有鏡像;

innodb_log_group_home_dir? 日志組所在的路徑,默認為data的home目錄;

innodb_log_files_in_group? ? 日志組的數(shù)量,默認為2;

innodb_log_file_size? ? ? ? ? ? ? 日志組的大小,默認為5M;

innodb_log_buffer_size? ? ? ? 日志緩沖池的大小,圖上為30M;

三、參數(shù)的相關(guān)調(diào)優(yōu)

3.1 重做日志文件的大小設(shè)置跟ORACLE一樣,面臨的問題是相似的。

當innodb log設(shè)置過大的時候,可能會導(dǎo)致系統(tǒng)崩潰后恢復(fù)需要很長的時間;

當innodb log設(shè)置過小的時候,當一個事務(wù)產(chǎn)生大量的日志的時候,需要多次切換重做日志文件,會產(chǎn)生類似如下的報警;

130702 12:53:13? InnoDB: ERROR: the age of the last checkpoint is 2863217109,

InnoDB: which exceeds the log group capacity 566222311.

InnoDB: If you are using big BLOB or TEXT rows, you must set the

InnoDB: combined size of log files at least 10 times bigger than the

四、重做日志與二進制日志的區(qū)別

4.1? 記錄的范圍不同:二進制日志會記錄MySQL的所有存儲引擎的日志記錄(包括InnoDB、MyISAM等),

而InnoDB存儲引擎的重做日志只會記錄其本身的事務(wù)日志。

4.2 記錄的內(nèi)容不同:二進制日志文件記錄的格式可以為STATEMENT或者ROW也可以是MIXED,其記錄的都是關(guān)于一個事務(wù)的具體操作內(nèi)容。

InnoDB存儲引擎的重做日志文件記錄的關(guān)于每個頁的更改的物理情況。

4.3 寫入的時間也不同:二進制日志文件是在事務(wù)提交前進行記錄的,而在事務(wù)進行的過程中,不斷有重做日志條目被寫入到重做日志文件中。

總結(jié):理論指導(dǎo)實踐,理論的知識雖然比較枯燥,學(xué)習(xí)跟建房子一樣,看著很漂亮的高樓大廈,地下往往要有一個堅實的基礎(chǔ),基礎(chǔ)打好了,高樓也能建得穩(wěn)了。

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的mysql innodb log_教你如何理解mysql中的innoDB log的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。