亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Mysql BinLog存儲機制與數據恢復方式

 更新時間:2024年06月01日 15:04:34   作者:FYHannnnnn  
這篇文章主要介紹了Mysql BinLog存儲機制與數據恢復方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

一,BinLog

Redo Log 是屬于InnoDB引擎所特有的日志,而MySQL Server也有自己的日志,即 Binary log(二進制日志),簡稱Binlog。

Binlog是記錄所有數據庫表結構變更以及表數據修改的二進制日志,不會記錄SELECT和SHOW這類操作。

Binlog日志是以事件形式記錄,還包含語句所執(zhí)行的消耗時間。

一般情況下,開啟Binlog日志有以下兩個最重要的使用場景:

  • 主從復制:在主庫中開啟Binlog功能,這樣主庫就可以把Binlog傳遞給從庫,從庫拿到 Binlog后實現(xiàn)數據恢復達到主從數據一致性。
  • 數據恢復:通過mysqlbinlog工具來恢復數據,尤其是刪除數據。

二,BinLog文件記錄模式

Binlog文件名默認為“主機名_binlog-序列號”格式,例如oak_binlog-000001,也可以在配置文件 、中指定名稱。

文件記錄模式有STATEMENT、ROW和MIXED三種:

ROW(row-based replication, RBR):日志中會記錄每一行數據被修改的情況,然后在 slave端對相同的數據進行修改。

  • 優(yōu)點:能清楚記錄每一個行數據的修改細節(jié),能完全實現(xiàn)主從數據同步和數據的恢復。
  • 缺點:批量操作,會產生大量的日志,尤其是alter table會讓日志暴漲。

STATMENT(statement-based replication, SBR):每一條被修改數據的SQL都會記錄到 master的Binlog中,slave在復制的時候SQL進程會解析成和原來master端執(zhí)行過的相同的 SQL再次執(zhí)行。簡稱SQL語句復制。(Sql語句的復制和Redo Log有相似)

  • 優(yōu)點:日志量小,減少磁盤IO,提升存儲和恢復速度
  • 缺點:在某些情況下會導致主從數據不一致,比如last_insert_id()、now()等函數。

MIXED(mixed-based replication, MBR):以上兩種模式的混合使用,一般會使用 STATEMENT模式保存binlog,對于STATEMENT模式無法復制的操作使用ROW模式保存 binlog,MySQL會根據執(zhí)行的SQL語句選擇寫入模式。

三,BinLog文件結構

MySQL的binlog文件中記錄的是對數據庫的各種修改操作,用來表示修改操作的數據結構是Log event。

不同的修改操作對應的不同的log event。

比較常用的log event有:Query event、Row event、Xid event等binlog文件的內容就是各種Log event的集合。

Log Event結構圖:

四,BinLog 寫入機制

1,根據記錄模式和操作觸發(fā)event事件生成log event(事件觸發(fā)執(zhí)行機制)

2,將事務執(zhí)行過程中產生log event寫入緩沖區(qū),每個事務線程都有一個緩沖區(qū) Log Event保存在一個binlog_cache_mngr數據結構中,在該結構中有兩個緩沖區(qū),一個是 stmt_cache,用于存放不支持事務的信息;另一個是trx_cache,用于存放支持事務的信息。

3,事務在提交階段會將產生的log event寫入到外部binlog文件中。 不同事務以串行方式將log event寫入binlog文件中,所以一個事務包含的log event信息在 binlog文件中是連續(xù)的,中間不會插入其他事務的log event。

五,BinLog 與 redo Log區(qū)別

Redo Log是屬于InnoDB引擎功能,Binlog是屬于MySQL Server自帶功能,并且是以二進制 文件記錄。

  • Redo Log屬于物理日志,記錄該數據頁更新狀態(tài)內容,Binlog是邏輯日志,記錄更新過程。
  • Redo Log日志是循環(huán)寫,日志空間大小是固定,Binlog是追加寫入,寫完一個寫下一個,不會覆蓋使用。
  • Redo Log作為服務器異常宕機后事務數據自動恢復使用,Binlog可以作為主從復制和數據恢 復使用。Binlog沒有自動crash-safe能力。

六,BinLog 日志分析與恢復

I,BinLog開啟相關配置要修改my.cnf或my.ini配置文件,在[mysqld]下面log_bin=mysql_bin_log

II. 查看服務器上有哪些BinLog文件命令: show binary logs;

III.查看當前朝哪一個文件中寫入內容命令: show master status;

IV.查看當前有哪一些事件類型命令:show binlog events; or 指定文件名稱 show binlog events in 文件名

V.mysqlbinlog 文件名,查看BinLog內容(此命令非cmd命令,需要到安裝mysql服務器上執(zhí)行),執(zhí)行該命令時需要注意不能帶有分號,否則報錯

如果想要恢復這一段,那么就要使用到起始點和結束點,或者去使用時間,但是時間不規(guī)范,因為同時間并發(fā)操作下,恢復可能會出現(xiàn)問題。

mysqldump:定期全部備份數據庫數據。mysqlbinlog可以做增量備份和恢復操作。

恢復命令如下:

按指定時間恢復

mysqlbinlog --start-datetime="2021-10-27 14:23:00" --stopdatetime="2021-10-27 14:30:00" mysqlbinlog.000002 | mysql -uXXX -pXXX

按事件位置號恢復

mysqlbinlog --start-position=9281 --stop-position=9232 mysqlbinlog.000002 | mysql -uXXX -pXXX

VI.BinLog 文件刪除

purge binary logs to 'mysqlbinlog.000001'; //刪除指定文件
purge binary logs before '2021-10-27 00:00:00'; //刪除指定時間之前的文件
reset master; //清除所有文件

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Linux中部署MySQL環(huán)境的四種方式圖文詳解

    Linux中部署MySQL環(huán)境的四種方式圖文詳解

    這篇文章主要介紹了Linux中部署MySQL環(huán)境的四種方式,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-11-11
  • DBeaver連接mysql數據庫圖文教程(超詳細)

    DBeaver連接mysql數據庫圖文教程(超詳細)

    本文主要介紹了DBeaver連接mysql數據庫圖文教程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • Ubuntu與windows雙系統(tǒng)下共用MySQL數據庫的方法

    Ubuntu與windows雙系統(tǒng)下共用MySQL數據庫的方法

    ubuntu系統(tǒng)和windows系統(tǒng)雙系統(tǒng)共用是用戶喜歡使用的方式之一,而MySQL是一個小型關系型數據庫管理系統(tǒng),在Windows平臺中常以WAMP方式搭配使用,在Linux平臺中常以LAMP組合形式出現(xiàn),下面的方法可以使得Ubuntu平臺共用Windows平臺中的MySQL數據庫
    2012-01-01
  • mysql 數據庫鏈接狀態(tài)確認實驗(推薦)

    mysql 數據庫鏈接狀態(tài)確認實驗(推薦)

    這篇文章主要介紹了mysql 數據庫鏈接狀態(tài)確認實驗,通過本文我選擇 了三種方案給大家詳細講解,結合實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2022-09-09
  • MySQL?InnoDB?存儲引擎的底層邏輯架構

    MySQL?InnoDB?存儲引擎的底層邏輯架構

    這篇文章主要為大家介紹了MySQL?InnoDB?存儲引擎的底層邏輯架構詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • 基于C++實現(xiàn)Mysql數據庫連接池實例

    基于C++實現(xiàn)Mysql數據庫連接池實例

    數據庫連接池負責分配、管理、和釋放數據庫連接,允許使用應用程序重復使用一個現(xiàn)有的數據庫連接。數據庫連接是關鍵有限且昂貴的資源,一個數據庫連接對象均對應一個物理數據庫的連接,每次操作都打開一個物理連接,使用完都關閉連接
    2022-12-12
  • MySQL 慢查詢日志的開啟與配置

    MySQL 慢查詢日志的開啟與配置

    這篇文章主要介紹了MySQL 慢查詢日志的開啟與配置的方法,幫助大家更好的理解和使用MySQL數據庫,感興趣的朋友可以了解下
    2020-12-12
  • MYSQL主從數據庫同步備份配置的方法

    MYSQL主從數據庫同步備份配置的方法

    這篇文章主要介紹了的相關資料,需要的朋友可以參考下
    2015-10-10
  • MySQL筆記 —SQL運算符

    MySQL筆記 —SQL運算符

    這篇文章主要介紹了SQL運算符,在sql語言中常用的運算符有這幾種:算術運算符、賦值運算符、比較運算符、邏輯運算符,下面面基于記住運算符資料展開文章內容,需要的小伙伴可以參考一下
    2022-01-01
  • mysql中整數數據類型tinyint詳解

    mysql中整數數據類型tinyint詳解

    大家好,本篇文章主要講的是mysql中整數數據類型tinyint詳解,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12

最新評論