日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

mysql的innodb中事務(wù)日志ib_logfile

系統(tǒng) 2433 0

ib_logfile正如你所說,它是INNODB的REDO、UNDO日志,并不是備份用的日志。
MYSQL可以通過BINLOG來恢復(fù),但這個ib_logfile沒什么恢復(fù)的作用,它主要是在事務(wù)中起一個前滾或后滾的作用。

?

mysql的innodb中事務(wù)日志ib_logfile
事務(wù)日志或稱redo日志,在mysql中默認以ib_logfile0,ib_logfile1名稱存在,可以手工修改參數(shù),調(diào)節(jié)
開啟幾組日志來服務(wù)于當前mysql數(shù)據(jù)庫,mysql采用順序,循環(huán)寫方式,每開啟一個事務(wù)時,
會把一些相關(guān)信息記錄事務(wù)日志中(記錄對數(shù)據(jù)文件數(shù)據(jù)修改的物理位置或叫做偏移量);
作用:在系統(tǒng)崩潰重啟時,作事務(wù)重做;在系統(tǒng)正常時,每次checkpoint時間點,會將之前寫入事務(wù)
應(yīng)用到數(shù)據(jù)文件中。
引入一個問題:在m/s環(huán)境中,innodb寫完ib_logfile后,服務(wù)異常關(guān)閉,會不會主庫能用ib_logfile恢復(fù)數(shù)據(jù),而
binlog沒寫導(dǎo)致從庫同步時少少這個事務(wù)?從而導(dǎo)致主從不一致;
redo日志寫入方式:
1.ib_logfile寫入當前事務(wù)更新數(shù)據(jù),并標上事務(wù)準備trx_prepare
2.寫入bin-log
3.ib_logfile當前事務(wù)提交提交trx_commit
恢復(fù)方式:
如果ib_logfile已經(jīng)寫入事務(wù)準備,那么在恢復(fù)過程中,會依據(jù)bin-log中該事務(wù)是否存在恢復(fù)數(shù)據(jù)。
假設(shè):
1)結(jié)束后異常,因沒有寫入bin-log,從庫不會同步這個事務(wù),主庫上,重啟時,在恢復(fù)日志中這個
事務(wù)沒有commit,即rollback這個事務(wù).
2)結(jié)束后異常,這會bin-log已經(jīng)寫入,從庫會同步這個事務(wù)。主庫依據(jù)恢復(fù)日志和bin-log,也正常恢復(fù)此事務(wù)
綜上描述:bin-log寫入完成,主從會正常完成事務(wù);bin-log沒有寫入,主從庫rollback事務(wù);不會出現(xiàn)主從庫不一致問題.
相關(guān)參數(shù)(全局&靜態(tài)):
innodb_log_buffer_size
innodb_log_file_size
innodb_log_files_in_group
innodb_log_group_home_dir
innodb_flush_log_at_trx_commit
innodb_log_buffer_size:事務(wù)日志緩存區(qū),可設(shè)置1M~8M,默認8M,延遲事務(wù)日志寫入磁盤,
把事務(wù)日志緩存區(qū)想象形如"漏斗"狀,會不停向磁盤記錄緩存的日志記錄,而何時寫入通過參數(shù)
innodb_flush_log_at_trx_commit控制,稍后解釋,啟用大的事務(wù)日志緩存,可以將完整運行大事
務(wù)日志,暫時存放在事務(wù)緩存區(qū)中,不必(事務(wù)提交前)寫入磁盤保存,同時也起到節(jié)約磁盤空間占用;
innodb_log_file_size:控制事務(wù)日志ib_logfile的大小,范圍5MB~4G;所有事務(wù)日志ib_logfile0+
ib_logfile1+..累加大小不能超過4G,事務(wù)日志大,checkpoint會少,節(jié)省磁盤IO,但是大的事務(wù)日
志意味著數(shù)據(jù)庫crash時,恢復(fù)起來較慢.
引入問題:修改該參數(shù)大小,導(dǎo)致ib_logfile文件的大小和之前存在的文件大小不匹配
解決方式:在干凈關(guān)閉數(shù)據(jù)庫情況下,刪除ib_logfile,而后重啟數(shù)據(jù)庫,會自行創(chuàng)建該文件;
innodb_log_files_in_group:DB中設(shè)置幾組事務(wù)日志,默認是2;
innodb_log_group_home_dir:事務(wù)日志存放目錄,不設(shè)置,ib_logfile0...存在在數(shù)據(jù)文件目錄下
innodb_flush_log_at_trx_commit:控制事務(wù)日志何時寫盤和刷盤,安全遞增:0,2,1
事務(wù)緩存區(qū):log_buffer;
0:每秒一次事務(wù)緩存區(qū)刷新到文件系統(tǒng),同時文件系統(tǒng)到磁盤同步,但是事務(wù)提交時,不會觸發(fā)log_buffer到文件系統(tǒng)同步;
2:每次事務(wù)提交時,會把事務(wù)緩存區(qū)日志刷新到文件系統(tǒng)中去,且每秒文件系統(tǒng)到磁盤同步;
1:每次事務(wù)提交時刷新到磁盤,最安全;
適用環(huán)境:
0:磁盤IO能力有限,安全方便較差,無復(fù)制或復(fù)制延遲可以接受,如日志性業(yè)務(wù),mysql損壞丟失1s事務(wù)數(shù)據(jù);
2:數(shù)據(jù)安全性有要求,可以丟失一點事務(wù)日志,復(fù)制延遲也可以接受,OS損壞時才可能丟失數(shù)據(jù);
1:數(shù)據(jù)安全性要求非常高,且磁盤IO能力足夠支持業(yè)務(wù),如充值消費,敏感業(yè)務(wù);

mysql的innodb中事務(wù)日志ib_logfile


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 龙川县| 邹城市| 二连浩特市| 勃利县| 原阳县| 汉源县| 全州县| 宝山区| 潜山县| 台前县| 宁都县| 那坡县| 茂名市| 遂宁市| 乐陵市| 台前县| 尉犁县| 东兴市| 东台市| 西青区| 连平县| 阿瓦提县| 玛纳斯县| 霍林郭勒市| 阿拉尔市| 新源县| 东乡县| 琼中| 徐州市| 剑川县| 通河县| 工布江达县| 保康县| 彝良县| 新闻| 邯郸县| 麻阳| 手游| 城市| 汝城县| 景德镇市|