redo log是屬于innoDB層面,binlog屬于MySQL Server層面的,這樣在數(shù)據(jù)庫用別的存儲引擎時(shí)可以達(dá)到一致性的要求。
redo log是物理日志,記錄該數(shù)據(jù)頁更新的內(nèi)容;binlog是邏輯日志,記錄的是這個(gè)更新語句的原始邏輯
redo log是循環(huán)寫,日志空間大小固定;binlog是追加寫,是指一份寫到一定大小的時(shí)候會更換下一個(gè)文件,不會覆蓋。
binlog可以作為恢復(fù)數(shù)據(jù)使用,主從復(fù)制搭建,redo log作為異常宕機(jī)或者介質(zhì)故障后的數(shù)據(jù)恢復(fù)使用。
1.redo log通常是物理日志,記錄的是數(shù)據(jù)頁的物理修改,而不是某一行或某幾行修改成怎樣怎樣,它用來恢復(fù)提交后的物理數(shù)據(jù)頁(恢復(fù)數(shù)據(jù)頁,且只能恢復(fù)到最后一次提交的位置)。
2.undo用來回滾行記錄到某個(gè)版本。undo log一般是邏輯日志,根據(jù)每行記錄進(jìn)行記錄。