日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

MySQL非常重要的日志bin log詳解

瀏覽:38日期:2023-06-08 19:37:37
目錄bin log是什么?bin log和redo log區別?bin log怎么寫的?bin log寫到哪了?bin log內容長啥樣?總結bin log是什么?

bin log全稱binary log,二進制日志文件,它記錄了數據庫所有執行的 DDL 和 DML 等數據庫更新的語句,但是不包含select或者show等沒有修改任何數據的語句。它是MySQL級別的日志,也就是說所有的存儲引擎都會產生bin log,而redo log或者undo log事務日志只有innoDB存儲引擎才有。

那bin log有什么用呢?

數據恢復,如果MySQL數據庫意外掛了,可以利用bin log進行數據恢復,因為該日志記錄所有數據庫所有的變更,保證數據的安全性。數據復制,利用一定的機制將主節點MySQL的日志數據傳遞給從節點,實現數據的一致性,實現架構的高可用和高性能。

所以bin log對于數據備份、主從、主主等都都起到了關鍵作用。

bin log和redo log區別?

看了上面的bin log介紹,是不是感覺和事務日志redo log特別像呢?也是在事務執行的時候記錄日志,但是他們還是有區別的。

你知道redo log嗎, 如果不了解的話請參考這篇文章:詳解MySQL事務日志redo log_Mysql_好吧啦網 (jb51.net)

我們現在從多個角度對比下他們倆究竟有什么不一樣?

從使用場景角度來說:

redo log主要實現故障情況下的數據恢復,保證事務的持久性bin log主要用于數據災備、同步

從數據內容角度來說:

redo log是"物理日志", 記錄的是具體數據頁上做了什么修改bin log是"邏輯日志", 記錄內容是語句的原始邏輯,類似于“給 ID=2 這一行的 name 改為alvin”

從生成范圍角度來說:

redo log是InnoDB存儲引擎生成的事務日志,其他存儲引擎沒有bin log是MySQL Server生成的日志,所有的存儲引擎都有

從生成時機角度來說:

redo log是在事務執行過程中就會writebin log是在事務提交的時候writebin log怎么寫的?

那bin log是什么時候寫的,寫入的機制又是怎么樣的呢?

bin log寫入的整體流程如下圖所示:

為了保證寫的效率,會將事務的bin log先寫到binlog cache中,注意,這個cache位于事務線程的內存中,主要是一個事務的bin log不能被拆開,是一個整體在提交事務的時候,將binlog cache中的數據統一寫道文件系統緩存page cache中,這個過程速度也很快然后根據不同的策略,將文件系統緩存中的bin logfsync刷到磁盤中,這里的策略后面詳細講解。

3種刷盤策略:

bin log和 redo log類似,都有3種刷盤策略, bin log的write和fsync時機是由參數 sync_binlog 控制,默認是 0 。

sync_binlog = 0

為0的時候,表示每次提交事務都只 write,由系統自行判斷什么時候執行fsync。雖然性能得到提升,但是機器宕機,page cache里面的 binglog 會丟失。

sync_binlog = 1

表示每次提交事務都會執行fsync,更加安全sync_binlog = N

可以設置為N(N>1),表示每次提交事務都write,但累積N個事務后才fsync

我們已經知道,事務執行時會同時記錄redo log和bin log兩種日志,那會有日志出錯不一致問題嗎?

redo log在事務執行過程中可以不斷寫入bin log只有在提交事務時才寫入

假如事務執行sqlupdate T set c = 1 where id = 2,在寫完redo log日志后,bin log日志寫期間發生了異常,會出現什么情況呢?

由于bin log沒寫完就異常,這時候bin log里面沒有對應的修改記錄。因此,之后用bin log日志恢復數據時,就會少這一次更新,恢復出來的這一行c值為0,而原庫因為redo log日志恢復,這一行c的值是1,最終數據不一致。

那有什么解決方案嗎?二階段提交方案。

為了解決兩份日志之間的一致性問題,InnoDB存儲引擎使用兩階段提交方案。將redo log的寫入拆成了兩個步驟prepare和commit。

假如現在寫入bin log時MySQL發生異常,這時候的redo log還處于prepare階段,重啟MySQL后,根據redo log記錄中的事務ID,發現沒有對應的bin log日志,回滾前面已寫入的數據。如果redo log 在commit階段發生移除,但是能通過事務id找到對應的bin log日志,所以MySQL認為是完整的,就會提交事務恢復數據。bin log寫到哪了?

前面講解了bin log寫入的過程,那么它寫到了哪里去了呢?

查看bin log位置

可以通過命令show variables like '%log_bin%';查看bin log最終輸出的位置。

log_bin_basename: 是bin log日志的基本文件名,后面會追加標識來表示每一個文件log_bin_index: 是binlog文件的索引文件,這個文件管理了所有的binlog文件的目錄

通過 SHOW BINARY LOGS;查看當前的二進制日志文件列表及大小,如下圖:

修改 bin log位置

修改MySQL的my.cfg或my.ini配置

#啟用二進制日志log-bin=cxw-binbinlog_expire_logs_seconds=600max_binlog_size=100Mlog-bin: bin log日志保存的位置binlog_expire_logs_seconds: bin log日志保存的時間,單位是秒max_binlog_size: 單個bin log日志的容量bin log內容長啥樣?

我們已經知道了bin log的位置了,那它里面的內容長什么樣呢?

我們可以用show binlog events命令工具查看bin log日志中的內容。

show binlog events [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count];IN 'log_name' :指定要查詢的binlog文件名(不指定就是第一個binlog文件)FROM pos :指定從哪個pos起始點開始查起(不指定就是從整個文件首個pos點開始算)LIMIT [offset] :偏移量(不指定就是0)row_count :查詢總條數(不指定就是所有行)

bin log 格式

實際上bin log輸出的格式類型有3種,默認是ROW類型,就是上面例子中的格式。

Statement格式:每一條會修改數據的sql都會記錄在bin log中優點:不需要記錄每一行的變化,減少了bin log日志量,節約了IO,提高性能。缺點:比如sql中存在函數如now()等,依賴環境的函數,會導致主從同步、恢復數據不一致ROW格式:為了解決Statement缺點,記錄具體哪一個分區中的、哪一個頁中的、哪一行數據被修改了優點:清楚的記錄下每一行數據修改的細節,不會出現某些特定情況下 的存儲過程,或function無法被正確復制的問題。缺點:比如對ID<600的所有數據進行了修改操作,那么意味著很多數據發生變化,最終導致同步的log很多,那么磁盤IO、網絡帶寬開銷會很高。Mixed格式: 混合模式,即Statment、Row的結合版對于可以復制的SQL采用Statment模式記錄,對于無法復制的SQL采用Row記錄。總結

本文講解了MySQL中的一個非常重要的日志bin log,它主要用來做數據恢復和同步的,所以作為程序員的我們,還是很有必要對它有一個深入的認識。

以上就是MySQL非常重要的日志bin log詳解的詳細內容,更多關于MySQL日志bin log的資料請關注好吧啦網其它相關文章!

標簽: MySQL 數據庫
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
91精品国产自产在线丝袜啪| 久久久久国产精品一区二区| 国产精品第一| 一区二区三区四区在线看| 欧美亚洲综合视频| 九色精品91| 色综合五月天| 日本不卡视频在线观看| 亚州av乱码久久精品蜜桃| 国产精品扒开腿做爽爽爽软件| 另类中文字幕国产精品| 国产中文一区| 国产96在线亚洲| 麻豆精品蜜桃视频网站| 国产精品第一| 亚洲精品国产精品粉嫩| 亚洲激情二区| 日韩在线视频精品| 鲁大师精品99久久久| 在线天堂中文资源最新版| 奇米777国产一区国产二区| 香蕉视频成人在线观看| 黄色不卡一区| 欧美日韩精品一区二区视频| 捆绑调教日本一区二区三区| 国产欧美激情| 国产精品www.| 亚洲欧美久久久| 91视频精品| 蜜臀久久精品| 成人羞羞在线观看网站| av亚洲在线观看| 亚洲最新无码中文字幕久久 | 精品三级在线观看视频| 久久午夜视频| 美国欧美日韩国产在线播放| 久久亚洲影院| 亚洲一区二区三区高清| 日韩影院免费视频| 国产欧美自拍| 久久精品人人| 999久久久亚洲| 午夜在线精品偷拍| 日韩激情av在线| 欧美激情精品| 久久亚洲在线| 日本不卡一区二区| 99视频精品免费观看| 欧美精品自拍| 日韩在线欧美| 久草精品视频| 国产欧美日韩影院| 久久av一区二区三区| 成人在线超碰| 国产精品欧美日韩一区| 免费久久99精品国产| 久久视频精品| 色吊丝一区二区| 色网在线免费观看| 国产伊人久久| 国产精品一区免费在线| 日韩精品社区| 日韩精品高清不卡| 婷婷精品在线| 日本午夜免费一区二区| 午夜av一区| 亚洲欧美日韩专区| 亚洲色图网站| 国产亚洲综合精品| 蜜桃伊人久久| 男女激情视频一区| 亚洲日产av中文字幕| 视频一区欧美日韩| 国产一区二区高清| 老司机精品久久| 亚洲ab电影| 国产精品magnet| 7m精品国产导航在线| 国产一区二区三区精品在线观看| 久久精品国内一区二区三区| 国产调教一区二区三区| 国产91在线精品| xxxxx性欧美特大| 欧美色图一区| 在线精品视频一区| 国产精品一区二区99| 日韩欧美一区二区三区在线视频| 中文字幕日韩欧美精品高清在线| 国产欧美日韩一区二区三区在线| 欧美精品不卡| 最近高清中文在线字幕在线观看1| 日本精品不卡| 亚洲aa在线| 国产精品天天看天天狠| 成人羞羞视频播放网站| 久久精品一本| 激情综合网五月| 亚洲2区在线| 日本不良网站在线观看| 国产精品毛片一区二区三区| 91精品国产自产精品男人的天堂| 国产综合欧美| 日韩精品一区二区三区免费视频| 久久久久网站| 日韩三级久久| 亚洲视频综合| 欧美国产另类| 国产精品对白| 性欧美xxxx免费岛国不卡电影| 国产一区二区三区久久 | 模特精品在线| 色婷婷色综合| 久久伊人久久| 蜜桃视频免费观看一区| 国产精品日韩久久久| 国精品一区二区| 精品视频91| 久久久久久久久久久妇女| 国产探花一区在线观看| 国产精品试看| av日韩中文| 亚洲乱亚洲高清| 国产欧美精品久久| 首页国产欧美久久| 136国产福利精品导航网址| 国产精品13p| 国产成人久久精品一区二区三区| 欧美日韩一区二区国产| 欧洲激情综合| 1000部精品久久久久久久久| 欧美日韩一二三四| 精品久久91| 国产精品久久久久蜜臀| 国产精品国产三级在线观看| 欧美日一区二区三区在线观看国产免 | 午夜欧美视频| 欧美日韩亚洲在线观看| 在线亚洲人成| 秋霞影院一区二区三区| 亚洲h色精品| 欧美日韩国产一区二区三区不卡| 欧美二区视频| 成人日韩精品| 91精品99| 亚洲最大av| 日韩一区二区三区免费视频| 日韩精品三级| 国产精品伦一区二区| 国产精品tv| 国产在线|日韩| 亚洲午夜免费| 日韩一区网站| 精品精品久久| 九九综合在线| 91成人在线| 久久婷婷亚洲| 日韩高清一级| 高潮久久久久久久久久久久久久| 亚洲黄页一区| 亚洲ab电影| 人人精品亚洲| 国产亚洲观看| 久久电影一区| 国产精品最新| 午夜影院欧美| 国产精品网在线观看| 婷婷亚洲五月| 国产精品av久久久久久麻豆网| 国产精品亚洲一区二区在线观看| 久久国产成人午夜av影院宅| 黄色亚洲大片免费在线观看| 久久福利精品| 国产精品第十页| 尤物网精品视频| 精品九九久久| 日本强好片久久久久久aaa| 久久国产成人午夜av影院宅| 三级在线观看一区二区| 国产成人精品免费视| 免费久久99精品国产| 久久精品天堂| 日韩中文字幕亚洲一区二区va在线| 久久精品在线| 国产精品任我爽爆在线播放| 亚洲欧美日韩国产综合精品二区| 欧美日韩水蜜桃| 国产精品videossex| 青草av.久久免费一区| 亚洲乱码久久| 日韩专区在线视频| 国产精品人人爽人人做我的可爱| 精品在线播放| 国产一区一一区高清不卡| 久久国产免费看| 日韩国产欧美三级| 国产女优一区| 亚洲一区二区三区高清不卡| 欧美国产91| 黄色在线一区| 日韩中文字幕麻豆|