最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mysql BinLog存儲機制與數(shù)據(jù)恢復(fù)方式

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

一,BinLog

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

Binlog是記錄所有數(shù)據(jù)庫表結(jié)構(gòu)變更以及表數(shù)據(jù)修改的二進制日志,不會記錄SELECT和SHOW這類操作

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

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

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

二,BinLog文件記錄模式

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

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

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

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

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

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

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

三,BinLog文件結(jié)構(gòu)

MySQL的binlog文件中記錄的是對數(shù)據(jù)庫的各種修改操作,用來表示修改操作的數(shù)據(jù)結(jié)構(gòu)是Log event。

不同的修改操作對應(yīng)的不同的log event。

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

Log Event結(jié)構(gòu)圖:

四,BinLog 寫入機制

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

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

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

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

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

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

六,BinLog 日志分析與恢復(fù)

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

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

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

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

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

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

mysqldump:定期全部備份數(shù)據(jù)庫數(shù)據(jù)。mysqlbinlog可以做增量備份和恢復(fù)操作。

恢復(fù)命令如下:

按指定時間恢復(fù)

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

按事件位置號恢復(fù)

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; //清除所有文件

總結(jié)

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

相關(guān)文章

  • 詳解MySQL實現(xiàn)主從復(fù)制過程

    詳解MySQL實現(xiàn)主從復(fù)制過程

    這篇文章主要為大家詳細介紹了MySQL主從復(fù)制的實現(xiàn)過程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • 詳解mysql5.7密碼忘記解決方法

    詳解mysql5.7密碼忘記解決方法

    這篇文章主要介紹了mysql5.7密碼忘記解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-05-05
  • MySQL配置文件my.cnf中文版對照

    MySQL配置文件my.cnf中文版對照

    MySQL配置文件my.cnf中文版,使用mysql的朋友可以參考下,了解每個參數(shù)的重要性。
    2011-09-09
  • MySQL不支持INTERSECT和MINUS及其替代方法

    MySQL不支持INTERSECT和MINUS及其替代方法

    這篇文章主要介紹了MySQL不支持INTERSECT和MINUS情況下的替代方法,需要的朋友可以參考下
    2014-03-03
  • MySQL中distinct和group by去重的區(qū)別解析

    MySQL中distinct和group by去重的區(qū)別解析

    在MySQL中,我們經(jīng)常需要對查詢結(jié)果進行去重,而DISTINCT和GROUP BY是實現(xiàn)這一功能的兩種常見方法,這篇文章主要介紹了MySQL中distinct和group by去重的區(qū)別,需要的朋友可以參考下
    2025-01-01
  • MySQL 8.0 中 LIMIT 優(yōu)化新特性使用場景及最佳實踐

    MySQL 8.0 中 LIMIT 優(yōu)化新特性使用場景及最佳實踐

    MySQL 8.0.21新增prefer_ordering_index參數(shù),允許干預(yù)優(yōu)化器在排序索引與過濾索引間的偏好,解決分頁查詢性能問題,提升效率,本文給大家介紹MySQL8.0 中LIMIT優(yōu)化新特性,感興趣的朋友一起看看吧
    2025-07-07
  • MySQL?中字符集詳細介紹

    MySQL?中字符集詳細介紹

    這篇文章主要介紹了MySQL?中字符集詳細介紹,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • Mysql使用insert插入多條記錄 批量新增數(shù)據(jù)

    Mysql使用insert插入多條記錄 批量新增數(shù)據(jù)

    這篇文章主要介紹了Mysql使用insert插入多條記錄批量新增數(shù)據(jù),需要的朋友可以參考下
    2017-08-08
  • mysql 8.0.12 安裝配置圖文教程

    mysql 8.0.12 安裝配置圖文教程

    這篇文章主要為大家詳細介紹了mysql 8.0.12 安裝配置圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • Mysql?中的多表連接和連接類型詳解

    Mysql?中的多表連接和連接類型詳解

    這篇文章詳細介紹了MySQL中的多表連接及其各種類型,包括內(nèi)連接、左連接、右連接、全外連接、自連接和交叉連接,通過這些連接方式,可以將分散在不同表中的相關(guān)數(shù)據(jù)組合在一起,從而進行更復(fù)雜的查詢和分析,感興趣的朋友一起看看吧
    2025-01-01

最新評論

天峨县| 宁海县| 西吉县| 乃东县| 通州市| 宁德市| 冷水江市| 洛川县| 遵化市| 乌海市| 大港区| 黎城县| 漾濞| 四平市| 彭泽县| 穆棱市| 阳泉市| 边坝县| 花垣县| 萍乡市| 富川| 元阳县| 丽水市| 墨江| 南澳县| 凤城市| 凤翔县| 贵溪市| 策勒县| 黄平县| 肇源县| 驻马店市| 东山县| 若羌县| 昌邑市| 南涧| 明光市| 泸定县| 启东市| 当阳市| 静宁县|