MySQL
中有六種日志文件,
分別是:重做日志(
redo log
)、回滾日志(
undo log
)、二進(jìn)制日志(
binlog
)、錯(cuò)誤日志(
errorlog
)、慢查詢?nèi)罩荆?
slow query log
)、一般查詢?nèi)罩荆?
general log
),中繼日志(
relay log
)。
其中重做日志和回滾日志與事務(wù)操作
息息相關(guān)
,二進(jìn)制日志也與事務(wù)操作有一定的關(guān)系,這三種日志,對(duì)理解
MySQL
中的事務(wù)操作有著重要的意義。
這里簡(jiǎn)單總結(jié)一下這三者具有一定相關(guān)性的日志。
重做日志(
redo log
)
十多年的綏中網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都營(yíng)銷網(wǎng)站建設(shè)的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整綏中建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)從事“綏中網(wǎng)站設(shè)計(jì)”,“綏中網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
作用:
確保事務(wù)的持久性。
防止在發(fā)生故障的時(shí)間點(diǎn),尚有臟頁(yè)未寫入磁盤,在重啟
mysql
服務(wù)的時(shí)候,根據(jù)
redo log
進(jìn)行重做,從而達(dá)到事務(wù)的持久性這一特性。
內(nèi)容:
物理格式的日志,記錄的是物理數(shù)據(jù)頁(yè)面的修改的信息,其
redo log
是順序?qū)懭?
redo log file
的物理文件中去的。
什么時(shí)候產(chǎn)生:
事務(wù)開(kāi)始之后就產(chǎn)生
redo log
,
redo log
的落盤并不是隨著事務(wù)的提交才寫入的,而是在事務(wù)的執(zhí)行過(guò)程中,便開(kāi)始寫入
redo log
文件中。
什么時(shí)候釋放:
當(dāng)對(duì)應(yīng)事務(wù)的臟頁(yè)寫入到磁盤之后,
redo log
的使命也就完成了,重做日志占用的空間就可以重用(被覆蓋)。
對(duì)應(yīng)的物理文件:
默認(rèn)情況下,對(duì)應(yīng)的物理文件位于數(shù)據(jù)庫(kù)的
data
目錄下的
ib_logfile1&ib_logfile2
innodb_log_group_home_dir
指定日志文件組所在的路徑,默認(rèn)
./
,表示在數(shù)據(jù)庫(kù)的數(shù)據(jù)目錄下。
innodb_log_files_in_group
指定重做日志文件組中文件的數(shù)量,默認(rèn)
2
關(guān)于文件的大小和數(shù)量,由一下兩個(gè)參數(shù)配置
innodb_log_file_size
重做日志文件的大小。
innodb_mirrored_log_groups
指定了日志鏡像文件組的數(shù)量,默認(rèn)
1
其他:
很重要一點(diǎn),
redo log
是什么時(shí)候?qū)懕P的?前面說(shuō)了是在事物開(kāi)始之后逐步寫盤的。
之所以說(shuō)重做日志是在事務(wù)開(kāi)始之后逐步寫入重做日志文件,而不一定是事務(wù)提交才寫入重做日志緩存,
原因就是,重做日志有一個(gè)緩存區(qū)
Innodb_log_buffer
,
Innodb_log_buffer
的默認(rèn)大小為
8M(
這里設(shè)置的
16M),Innodb
存儲(chǔ)引擎先將重做日志寫入
innodb_log_buffer
中。
然后會(huì)通過(guò)以下三種方式將
innodb
日志緩沖區(qū)的日志刷新到磁盤
1
,
Master Thread
每秒一次執(zhí)行刷新
Innodb_log_buffer
到重做日志文件。
2
,每個(gè)事務(wù)提交時(shí)會(huì)將重做日志刷新到重做日志文件。
3
,當(dāng)重做日志緩存可用空間
少于一半時(shí),重做日志緩存被刷新到重做日志文件
由此可以看出,重做日志通過(guò)不止一種方式寫入到磁盤,尤其是對(duì)于第一種方式,
Innodb_log_buffer
到重做日志文件是
Master Thread
線程的定時(shí)任務(wù)。
因此重做日志的寫盤,并不一定是隨著事務(wù)的提交才寫入重做日志文件的,而是隨著事務(wù)的開(kāi)始,逐步開(kāi)始的。
另外引用《
MySQL
技術(shù)內(nèi)幕
Innodb
存儲(chǔ)引擎》(
page37
)上的原話:
即使某個(gè)事務(wù)還沒(méi)有提交,
Innodb
存儲(chǔ)引擎仍然每秒會(huì)將重做日志緩存刷新到重做日志文件。
這一點(diǎn)是必須要知道的,因?yàn)檫@可以很好地解釋再大的事務(wù)的提交(
commit
)的時(shí)間也是很短暫的。
回滾日志(
undo log
)
作用:
保存了事務(wù)發(fā)生之前的數(shù)據(jù)的一個(gè)版本,可以用于回滾,同時(shí)可以提供多版本并發(fā)控制下的讀(
MVCC
),也即非鎖定讀
內(nèi)容:
邏輯格式的日志,在執(zhí)行
undo
的時(shí)候,僅僅是將數(shù)據(jù)從邏輯上恢復(fù)至事務(wù)之前的狀態(tài),而不是從物理頁(yè)面上操作實(shí)現(xiàn)的,這一點(diǎn)是不同于
redo log
的。
什么時(shí)候產(chǎn)生:
事務(wù)開(kāi)始之前,將當(dāng)前是的版本生成
undo log
,
undo
也會(huì)產(chǎn)生
redo
來(lái)保證
undo log
的可靠性
什么時(shí)候釋放:
當(dāng)事務(wù)提交之后,
undo log
并不能立馬被刪除,
而是放入待清理的鏈表,由
purge
線程判斷是否由其他事務(wù)在使用
undo
段中表的上一個(gè)事務(wù)之前的版本信息,決定是否可以清理
undo log
的日志空間。
對(duì)應(yīng)的物理文件:
MySQL5.6
之前,
undo
表空間位于共享表空間的回滾段中,共享表空間的默認(rèn)的名稱是
ibdata
,位于數(shù)據(jù)文件目錄中。
MySQL5.6
之后,
undo
表空間可以配置成獨(dú)立的文件,但是提前需要在配置文件中配置,完成數(shù)據(jù)庫(kù)初始化后生效且不可改變
undo log
文件的個(gè)數(shù)
如果初始化數(shù)據(jù)庫(kù)之前沒(méi)有進(jìn)行相關(guān)配置,那么就無(wú)法配置成獨(dú)立的表空間了。
關(guān)于
MySQL5.7
之后的獨(dú)立
undo
表空間配置參數(shù)如下
innodb_undo_directory = /data/undospace/ --undo
獨(dú)立表空間的存放目錄
innodb_undo_logs = 128 --
回滾段為
128KB
innodb_undo_tablespaces = 4 --
指定有
4
個(gè)
undo log
文件
如果
undo
使用的共享表空間,這個(gè)共享表空間中又不僅僅是存儲(chǔ)了
undo
的信息,共享表空間的默認(rèn)為與
MySQL
的數(shù)據(jù)目錄下面,其屬性由參數(shù)
innodb_data_file_path
配置。
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">
其他:
undo
是在事務(wù)開(kāi)始之前保存的被修改數(shù)據(jù)的一個(gè)版本,產(chǎn)生
undo
日志的時(shí)候,同樣會(huì)伴隨類似于保護(hù)事務(wù)持久化機(jī)制的
redolog
的產(chǎn)生。
默認(rèn)情況下
undo
文件是保持在共享表空間的,也即
ibdatafile
文件中,當(dāng)數(shù)據(jù)庫(kù)中發(fā)生一些大的事務(wù)性操作的時(shí)候,要生成大量的
undo
信息,全部保存在共享表空間中的。
因此共享表空間可能會(huì)變的很大,默認(rèn)情況下,也就是
undo
日志使用共享表空間的時(shí)候,被
“
撐大
”
的共享表空間是不會(huì)也不能自動(dòng)收縮的。
因此,
mysql5.7
之后的
“
獨(dú)立
undo
表空間
”
的配置就顯得很有必要了。
二進(jìn)制日志(
binlog
):
作用:
1
,用于復(fù)制,在主從復(fù)制中,從庫(kù)利用主庫(kù)上的
binlog
進(jìn)行重播,實(shí)現(xiàn)主從同步。
2
,用于數(shù)據(jù)庫(kù)的基于時(shí)間點(diǎn)的還原。
內(nèi)容:
邏輯格式的日志,可以簡(jiǎn)單認(rèn)為就是執(zhí)行過(guò)的事務(wù)中的
sql
語(yǔ)句。
但又不完全是
sql
語(yǔ)句這么簡(jiǎn)單,而是包括了執(zhí)行的
sql
語(yǔ)句(增刪改)反向的信息,
也就意味著
delete
對(duì)應(yīng)著
delete
本身和其反向的
insert
;
update
對(duì)應(yīng)著
update
執(zhí)行前后的版本的信息;
insert
對(duì)應(yīng)著
delete
和
insert
本身的信息。
在使用
mysqlbinlog
解析
binlog
之后一些都會(huì)
真相大白
。
因此可以基于
binlog
做到類似于
oracle
的閃回功能,其實(shí)都是依賴于
binlog
中的日志記錄。
什么時(shí)候產(chǎn)生:
事務(wù)提交的時(shí)候,一次性將事務(wù)中的
sql
語(yǔ)句(一個(gè)事物可能對(duì)應(yīng)多個(gè)
sql
語(yǔ)句)按照一定的格式記錄到
binlog
中。
這里與
redo log
很明顯的差異就是
redo log
并不一定是在事務(wù)提交的時(shí)候刷新到磁盤,
redo log
是在事務(wù)開(kāi)始之后就開(kāi)始逐步寫入磁盤。
因此對(duì)于事務(wù)的提交,即便是較大的事務(wù),提交(
commit
)都是很快的,但是在開(kāi)啟了
bin_log
的情況下,對(duì)于較大事務(wù)的提交,可能會(huì)變得比較慢一些。
這是因?yàn)?
binlog
是在事務(wù)提交的時(shí)候一次性寫入的造成的,這些可以通過(guò)測(cè)試驗(yàn)證。
什么時(shí)候釋放:
binlog
的默認(rèn)是保持時(shí)間由參數(shù)
expire_logs_days
配置,也就是說(shuō)對(duì)于非活動(dòng)的日志文件,在生成時(shí)間超過(guò)
expire_logs_days
配置的天數(shù)之后,會(huì)被自動(dòng)刪除。
對(duì)應(yīng)的物理文件:
配置文件的路徑為
log_bin_basename
,
binlog
日志文件按照指定大小,當(dāng)日志文件達(dá)到指定的最大的大小之后,進(jìn)行滾動(dòng)更新,生成新的日志文件。
對(duì)于每個(gè)
binlog
日志文件,通過(guò)一個(gè)統(tǒng)一的
index
文件來(lái)組織。
cDNLxlIf//vy0J+PsP2zB/af8ObTBideU79I1EvX4cayr3hDmoKDMRZwoIIdbUO4MJbwY2PyvvQwSdkvspMLis1iHCznJ0vmIiO9sW314UHFMtJ1eRrzy8Jl3+fsfrL9Ct6rSpbsZQNfYl6+KLO0ov958SGKzuOXx9eMr2AocrvAv+xtFBMRv5MACZDAXQgUbjrLbPy654126i7Y6CEb9owNWOQUcuKfdRXEC4/pow2tPGYYK22Kgdsuid/lkuQHK90ssO5nbzH84PHWGdrAxrS/jld06nRhGxIgARJoA4G/JMP+9etXG2yljSRAAiRAAiTQWQLMsDvreg6cBEiABEigTQQ4YbfJW7SVBEiABEigswQ4YXfW9Rw4CZAACZBAmwhwwm6Tt2grCZAACZBAZwlwwu6s6zlwEiABEiCBNhH4H0G/jmQnBPsTAAAAAElFTkSuQmCC">
其他:
二進(jìn)制日志的作用之一是還原數(shù)據(jù)庫(kù)的,這與
redo log
很類似,很多人混淆過(guò),但是兩者有本質(zhì)的不同
1
,作用不同:
redo log
是保證事務(wù)的持久性的,是事務(wù)層面的,
binlog
作為還原的功能,是數(shù)據(jù)庫(kù)層面的
(當(dāng)然也可以精確到事務(wù)層面的),雖然都有還原的意思,但是其保護(hù)數(shù)據(jù)的層次是不一樣的。
2
,內(nèi)容不同:
redo log
是物理日志,是數(shù)據(jù)頁(yè)面的修改之后的物理記錄
,
binlog
是邏輯日志,可以簡(jiǎn)單認(rèn)為記錄的就是
sql
語(yǔ)句
3
,另外,兩者日志產(chǎn)生的時(shí)間,可以釋放的時(shí)間,在可釋放的情況下清理機(jī)制,都是完全不同的。
4
,恢復(fù)數(shù)據(jù)時(shí)候的效率,基于物理日志的
redo log
恢復(fù)數(shù)據(jù)的效率要高于語(yǔ)句邏輯日志的
binlog
關(guān)于事務(wù)提交時(shí),
redo log
和
binlog
的寫入順序,為了保證主從復(fù)制時(shí)候的主從一致(當(dāng)然也包括使用
binlog
進(jìn)行基于時(shí)間點(diǎn)還原的情況),是要嚴(yán)格一致的,
MySQL
通過(guò)兩階段提交過(guò)程來(lái)完成事務(wù)的一致性的,也即
redo log
和
binlog
的一致性的,理論上是先寫
redo log
,再寫
binlog
,兩個(gè)日志都提交成功(刷入磁盤),事務(wù)才算真正的完成。
參考:
http://www.cnblogs.com/hustcat/p/3577584.html
總結(jié):
MySQL 中,對(duì)于以上三種日志,每一種細(xì)化起來(lái)都可以夠?qū)懸粋€(gè)章節(jié)的,這里粗略地總結(jié)了一下三種日志的一些特點(diǎn)和作用,以幫助理解 MySQL 中的事物以及事物背后的原理。
Mysql 重做日志及與二進(jìn)制日志的區(qū)別
Mysql 重做日志及與二進(jìn)制日志的區(qū)別 (轉(zhuǎn) http://blog.uouo123.com/post/623.html )
Mysql 默認(rèn)情況下會(huì)有兩個(gè)文件: ib_logfile0 和 ib_logfile1 ,這兩個(gè)文件就是重做日志文件,或者事務(wù)日志 。
重做日志的目的: 萬(wàn)一實(shí)例或者介質(zhì)失敗,重做日志文件就能派上用場(chǎng) 。
每個(gè) InnoDB 存儲(chǔ)引擎至少有一個(gè)重做日志文件組,每個(gè)文件組下至少有 2 個(gè)重做日志文件,如默認(rèn)的 ib_logfile0 、 ib_logfile1 。 InnoDB 存儲(chǔ)引擎先寫重做日志文件 1 ,當(dāng)達(dá)到文件的最后時(shí),會(huì)切換至重做日志文件 2 ,當(dāng)重做日志文件 2 也被寫滿時(shí),會(huì)再被切換到重做日志文件 1 中 。
影響重做日志的參數(shù) :
Innodb_log_file_size 、 innodb_log_files_in_group 、 innodb_log_group_home_dir 影響著重做日志文件的屬性 。