MySQL binlog日誌詳解

来源:https://www.cnblogs.com/YangJiaXin/archive/2018/12/30/10198355.html
-Advertisement-
Play Games

簡介 一系列binlog文件和一個index文件組成 binlog文件以一個4位元組的常量作為開頭(表示這是一個binlog文件) 後面跟著一系列binlog事件 作用 複製 備份恢復 崩潰恢復(啟用binlog,採用事物的兩階段提交協議,事務在存儲引擎中的可能為prepared和commit) bi ...


 

簡介

一系列binlog文件和一個index文件組成 binlog文件以一個4位元組的常量作為開頭(表示這是一個binlog文件) 後面跟著一系列binlog事件

作用

複製 備份恢復 崩潰恢復(啟用binlog,採用事物的兩階段提交協議,事務在存儲引擎中的可能為prepared和commit)

binlog使用

開啟binlog

log_bin[=base-name] 絕對路徑 不是絕對路徑(以base-name作為首碼命令binlog文件)

binlog格式

三種格式
STATEMENT ROW MIXED

優缺點

statement STATEMENT占用空間較小 可以用mysqlbinlog讀懂其中內容 不確定事件(USER、UUID、SYSDATE等)可能導致主從數據不一致 row row文件相對較大 不會存在數據不一致(最安全的資料庫複製方式) DDL語句和FLUHS系列語句還是會以文本形式記錄下來(事件類型為query_event)

binlog相關參數

max_binlog_size 單個binlog文件大小(binlog文件大小可能比max_binlog_size大) 同一個事務中產生的所有事件必須記錄在同一個binlog中

binlog過濾器

set sql_log_bin=0 禁用當前會話binlog功能 binlog_do_db binlog_ignore_db

sync_binlog

sync_binlog=0(寫入內容後持久化操作由操作系統來做) sync_binlog=1(寫入內容後立即執行fsync操作同步到磁碟上) sync_binlog=N(寫入N個事務才執行一次fsync操作)

binlog事件

查看事件

show binlog events in 'binlg-file' limit 10; 獲取事件類型,事件在文件中的位置等 binlog格式為statement,還可以看到具體SQL語句

binlog事件格式

binlog事件

公有事件頭(common-header / event header) 私有事件頭(post-header 部分binlog事件包含) 事件體(body / event data) 所有binlog都以一個13或者19位元組的公有事件頭開始

binlog事件類型

FORMAT_DESCRIPTION_EVENT
一個binlog文件中僅會出現一次
GTID_LOG_EVENT
記錄GTID事務號了,用於5.6版本之後基於GTID同步的方式
QUERY_EVENT
1、事務開始時,在binlog中記錄一個類型為query_event的begin事件 2、statement格式binlog中,具體執行的SQL語句保留在query_event事件中 3、row格式binlog,所有DDL操作以文本的格式記錄在query_event事件中
ROWS_QUERY_EVENT(預設無)
啟用binlog_rows_query_log_events後,row格式binlog DML也會記錄在Rows_query事件中
TABLE_MAP_EVENT ROWS_EVENT WRITE_ROWS_EVENT UPDATE_ROWS_EVENT DELETE_ROWS_EVENT XID_EVENT
statement和row格式的binlog,都會添加一個XID_EVENT事件作為事物的結束 該事件記錄了該事務的id,崩潰恢復時,根據事務在binlog中的提交情況決定是否提交存儲引擎中prepared的事務 一個事務產生的所有event會被GTID_LOG_EVENT和XID_EVENT包住
ROTATE_EVENT STOP_EVENT GTID模式
開啟GTID模式下,會記錄額外兩種事件,Previous_gtids事件和Gtid事件 Previous_gtids記錄該binlog文件之前執行過的所有事務對應的GTID集合,在系統啟動時,mysql讀取該事件的內容來進行相應的初始化工作
Alt text Alt text 非GTID模式
由GTID模式轉化為非GTID模式
Alt textAlt text
每個gtid文件中會有一個Previous_gtids

清理binlog

手動清理binlog

purge {binary | master} logs to "binlog-file-name" purge {binary | master} logs before "datetime-expr" 註意: 動態關閉/開啟GTID會連續Rotate 3次binlog文件 Alt textAlt text

 

 

 

自動清理binlog

expire_logs_day=N(0<=N<=99) binlog發生切換或者mysql server啟動時,遍歷index文件 找到第一個“最後修改時間”在N天內的binlog文件 將該binlog之前的所有binlog文件刪除掉

 參考

MariaDB原理與實現-二進位日誌binlog MyFlash——美團點評的開源MySQL閃回工具  


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、前言 1、本教程主要內容 ASP.NET Core MVC 集成 EF Core 介紹&操作步驟 ASP.NET Core MVC 使用 EF Core + Linq to Entity 訪問MySQL資料庫 ASP.NET Core MVC 使用 EF Core + 原生SQL訪問MySql數 ...
  • EF相關的內容園子里已經有很多很好的文章了,這篇只是把自己之前的一些整理搬運到這裡,拋磚引玉,溫故知新。 Migrations確實是個好東西,至少就升級維護Database方面,幫助筆者脫離苦海。另一個項目中開發階段忽視了DB升級的處理方面的問題,導致每次項目上線都很難去處理DB。因為只有最新版本的 ...
  • 1 高端記憶體與內核映射 儘管 函數族可用於從高端記憶體域向內核映射頁幀(這些在內核空間中通常是無法直接看到的), 但這並不是這些函數的實際用途. 重要的是強調以下事實 : 內核提供了其他函數用於將 頁幀顯式映射到內核空間, 這些函數與vmalloc機制無關. 因此, 這就造成了混亂. 而在高端記憶體的頁 ...
  • $>ls $>ls --help //查看命令幫助 $>man ls //查看命令幫助 $>clear //清屏 $>cd /home //切換目錄 $>cd . //進入當前目錄 $>cd .. //進入上級目錄 $>cd /home/admin//進入絕對路徑 $>pwd //顯式當前目錄 $> ...
  • 一 準備 1.1 完整架構:Kickstart+DHCP+NFS+TFTP+PXE 1.2 組件應用 Kickstart服務端IP:172.24.8.12 DHCP:提供客戶端IP,網關,鏡像路徑等; TFTP:共用pxelinux.0、initrd.img、vmlinux、isolinux.cfg ...
  • linux本地常見郵件服務有: Centos5:預設使用sendmail郵件服務,開啟方式/etc/init.d/sedmail start Centos6:預設使用postfix郵件服務,開啟方式/etc/init.d/postfix start 搭建郵件服務: 在/etc/mail.rc最後一行 ...
  • 一 必須參數 需要在配置文件中設置這些參數。如果用戶更新它們harbor.cfg並運行install.sh腳本以重新安裝Harbor,它們將生效。 hostname:目標主機的主機名,用於訪問UI和註冊服務。必須為目標電腦的IP地址或完全限定的功能變數名稱(FQDN),例如192.168.1.10或reg ...
  • 之前我自己建立好了一個資料庫xscj;表xs是已經定義好的 具體的定義數據類型如下: 為了複製表xs,我們新建一個表名為xstext,使用下列語句進行複製xs,或者說是備份都可以; 我們可以看到,複製的表的欄位與xs表的欄位相同,不同之處在於複製的表沒有主鍵或主碼,同時複製的表裡存儲了與原表相同的信 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...