- binlog是MySQL Server層記錄的日志惹盼, redo log是InnoDB存儲(chǔ)引擎層的日志。
兩者都是記錄了某些操作的日志(不是所有)自然有些重復(fù)(但兩者記錄的格式不同惫确,redolog屬于物理日志手报,記錄數(shù)據(jù)結(jié)果。 binlog是邏輯日志改化,記錄執(zhí)行語句掩蛤,所以redolog數(shù)據(jù)恢復(fù)速度快)。 - 選擇binlog日志作為replication我想主要原因是MySQL的特點(diǎn)就是支持多存儲(chǔ)引擎陈肛,
為了兼容絕大部分引擎來支持復(fù)制這個(gè)特性揍鸟,那么自然要采用MySQL Server自己記錄的日志而不是僅僅針對InnoDB的redo log,
因?yàn)槿绻捎昧薎nnoDB redo log復(fù)制句旱,那么其他引擎也想復(fù)制阳藻,此時(shí)改怎么辦呢?對吧
binlog屬于邏輯日志谈撒,是邏輯操作腥泥。innodb redo屬于物理日志,是物理變更啃匿。
邏輯日志有個(gè)缺點(diǎn)是難以并行道川,而物理日志可以比較好的并行操作,所以redo復(fù)制還是有優(yōu)勢的立宜,也許5.7能搞出來冒萄。
什么是binlog
binlog日志用于記錄所有更新且提交了數(shù)據(jù)或者已經(jīng)潛在更新提交了數(shù)據(jù)(例如,沒有匹配任何行的一個(gè)DELETE)的所有語句橙数。語句以“事件”的形式保存尊流,它描述數(shù)據(jù)更改。
binlog作用
1.恢復(fù)使能夠最大可能地更新數(shù)據(jù)庫灯帮,因?yàn)槎M(jìn)制日志包含備份后進(jìn)行的所有更新崖技。
2.在主復(fù)制服務(wù)器上記錄所有將發(fā)送給從服務(wù)器的語句。
binlog 主要參數(shù)
log_bin
設(shè)置此參數(shù)表示啟用binlog功能钟哥,并指定路徑名稱
Undo Log
Undo Log是為了實(shí)現(xiàn)事務(wù)的原子性迎献,在MySQL數(shù)據(jù)庫InnoDB存儲(chǔ)引擎中,還用UndoLog來實(shí)現(xiàn)多版本并發(fā)控制(簡稱:MVCC)腻贰。
-事務(wù)的原子性(Atomicity)
事務(wù)中的所有操作吁恍,要么全部完成,要么不做任何操作,不能只做部分操作冀瓦。如果在執(zhí)行的過程中發(fā)了錯(cuò)誤伴奥,要回滾(Rollback)到事務(wù)開始前的狀態(tài),就像這個(gè)事務(wù)從來沒有執(zhí)行過翼闽。
-原理
Undo Log的原理很簡單拾徙,為了滿足事務(wù)的原子性,在操作任何數(shù)據(jù)之前感局,首先將數(shù)據(jù)備份到一個(gè)地方(這個(gè)存儲(chǔ)數(shù)據(jù)備份的地方稱為UndoLo)尼啡。
然后進(jìn)行數(shù)據(jù)的修改。如果出現(xiàn)了錯(cuò)誤或者用戶執(zhí)行了ROLLBACK語句询微,系統(tǒng)可以利用UndoLog中的備份將數(shù)據(jù)恢復(fù)到事務(wù)開始之前的狀態(tài)玄叠。
除了可以保證事務(wù)的原子性,Undo Log也可以用來輔助完成事務(wù)的持久化拓提。
-事務(wù)的持久性(Durability)
事務(wù)一旦完成读恃,該事務(wù)對數(shù)據(jù)庫所做的所有修改都會(huì)持久的保存到數(shù)據(jù)庫中。為了保證持久性代态,數(shù)據(jù)庫系統(tǒng)會(huì)將修改后的數(shù)據(jù)完全的記錄到持久的存儲(chǔ)上寺惫。
缺陷:每個(gè)事務(wù)提交前將數(shù)據(jù)和Undo Log寫入磁盤,這樣會(huì)導(dǎo)致大量的磁盤IO蹦疑,因此性能很低西雀。
如果能夠?qū)?shù)據(jù)緩存一段時(shí)間,就能減少IO提高性能歉摧。但是這樣就會(huì)喪失事務(wù)的持久性艇肴。因此引入了另外一種機(jī)制來實(shí)現(xiàn)持久化,即
Redo log
記錄的是新數(shù)據(jù)的備份叁温。在事務(wù)提交前再悼,只要將Redo Log持久化即可,不需要將數(shù)據(jù)持久化膝但。當(dāng)系統(tǒng)崩潰時(shí)冲九,雖然數(shù)據(jù)沒有持久化,
但是RedoLog已經(jīng)持久化跟束。系統(tǒng)可以根據(jù)RedoLog的內(nèi)容莺奸,將所有數(shù)據(jù)恢復(fù)到最新的狀態(tài)。
-Undo+Redo
事務(wù)的特點(diǎn)
A.為了保證持久性冀宴,必須在事務(wù)提交前將
RedoLog持久化灭贷。
B.數(shù)據(jù)不需要在事務(wù)提交前寫入磁盤,而是緩存在內(nèi)存中略贮。
C.RedoLog保證事務(wù)的持久性甚疟。
D.UndoLog保證事務(wù)的原子性仗岖。
E.有一個(gè)隱含的特點(diǎn),數(shù)據(jù)必須要晚于redolog寫入持久存