1. 程式人生 > >MySQL的binlog日誌詳解

MySQL的binlog日誌詳解

binlog 就是binary log,二進位制日誌檔案,這個檔案記錄了MySQL所有的DML操作。通過binlog日誌我們可以做資料恢復,增量備份,主主複製和主從複製等等。對於開發者可能對binlog並不怎麼關注,但是對於運維或者架構人員來講是非常重要的。

binlog開啟成功之後,binlog檔案的位置可以在my.inf配置檔案中檢視。也可以在MySQL的命令列中檢視。命令列檢視程式碼如下

show variables like '%log_bin%';

我們也可以看一下當前MySQL的binlog的情況

show master status;

從上圖可以看到,當前只有一個binlog檔案,檔名為:mysql-bin.000001。每當我們重啟一次,會自動生成一個binlog檔案

,我們重啟完畢之後再來執行同樣的命令,內容如下:

存放binlog的目錄下也多個了這麼一個檔案。

當然,我們也可以手動的來重新整理binlog檔案,通過 flush logs,同樣會新建立一個binlog檔案。實際上當伺服器在重啟時,也會呼叫flush logs操作。

如果我們想把這些檔案全部清空,可以使用reset master 來處理

下面我來看針對單個檔案的操作,首先我們想看一下檔案的內容

找到binlog的目錄,比如我們要看mysql-bin.000001

vi mysql-bin.000001

我們看到的一堆亂碼。我們知道這是一堆的二進位制檔案,所以以文字的方式開啟二進位制檔案一定是有問題的,那麼我們該如何檢視這個檔案的內容呢?

mysql給我們提供了一個用於檢視binlog日誌的工具,叫做mysqlbinlog

mysqlbinlog myql-bin.000001

這個檔案比較長,一次開啟看不完怎麼辦呢,這裡可以使用linux的管道,這裡就不詳細的說了,可以自己去查詢關於linux的一些知識。

注意到上面的截圖中有一個position欄位,這個欄位類似於一個指標,目前這個欄位的值為154,表示的就是binlog當前的位置。我們每次執行dml操作,position都會改變。比如我們先來建立一個數據 test

在建立之前我們可以清一下binlog日誌方便我們檢視,可以使用 reset master。在生產環境中,這個操作是非常危險的,那麼我們可以使用flush logs來處理,生成一個新的binlog檔案。不管採用哪種方式,我們在測試的環境中,只要有一個新的binlog檔案就可以了。生成了新的binlog檔案之後,我們可以通過show master status 來檢視狀態

下面我們來執行一個dml語句,比如我們要建立一個test資料庫

create database test;

然後我們來檢視建立之後的狀態,如下,我們發現position從154變成了313,也就是說我們的操作是在154到313之間,然後我們再來看binlog的內容。

我們擷取154到313之間的binlog的內容如下:

# at 154

#170708 9:24:02 server id 12345 end_log_pos 219 CRC32 0x30763ffe Anonymous_GTID last_committed=0 sequence_number=1

SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;

# at 219

#170708 9:24:02 server id 12345 end_log_pos 313 CRC32 0x4d0140b3 Query thread_id=5 exec_time=0 error_code=0

SET TIMESTAMP=1499477042/*!*/;

SET @@session.pseudo_thread_id=5/*!*/;

SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;

SET @@session.sql_mode=1436549152/*!*/;

SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;

/*!\C utf8 *//*!*/;

SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=8/*!*/;

SET @@session.lc_time_names=0/*!*/;

SET @@session.collation_database=DEFAULT/*!*/;

create database test

/*!*/;

SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;

DELIMITER ;

# End of log file

/*!50003 SET [email protected]_COMPLETION_TYPE*/;

/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;

我們可以看到,mysql做了很多的隱含的操作,細心的朋友會看到有這個一句:create database test;

下面我們來簡單總結一下關於binlog:

1.binlog檔案會隨服務的啟動建立一個新檔案

2.通過flush logs 可以手動重新整理日誌,生成一個新的binlog檔案

3.通過show master status 可以檢視binlog的狀態

4.通過reset master 可以清空binlog日誌檔案

5.通過mysqlbinlog 工具可以檢視binlog日誌的內容

6.通過執行dml,mysql會自動記錄binlog

相關推薦

日誌

eve 級別 ava 進程 anr radio epo 對比 debug 日誌分類 整機開發項目中,日誌分為如下幾種: 1.bugreport 記錄ANR(application not response)信息,版本信息,設備型號 2.main 應用程序的信息,提交功能性問

tomcat訪問日誌

tomcat訪問日誌詳解tomcat日誌 tomcat日誌配置在server.xml裏的<host>標簽下加上<Valve className="org.apache.catalina.valves.AccessLogValve"directory="logs" prefix="localh

Apache日誌

Apache日誌路徑及作用 Apache日誌的定制 Apache日誌記錄的信息 Apache訪問日誌格式介紹 Apache錯誤日誌格式介紹 Apache日誌詳解1、Apache日誌文件名稱及路徑介紹當我們安裝並啟動Apache後,Apache會自動生成兩個日誌文件,這兩個日誌文件分別是訪問

javagc日誌

under nbsp etime garbage collect 分享圖片 http spa com https://blog.csdn.net/aliveTime https://plumbr.io/blog/garbage-collection/understan

mysql日誌

ror sql log-error dex -i ria 二進制日誌 ble time 日誌分類: 一、錯誤日誌。 1、在配置文件中的配置是:log-error="DESKTOP-igoodful.err",查看參數的鍵值對:show variables like ‘

nginx日誌

速度 發送 date limit 設置 記錄 IV ron 提升 nginx日誌詳解一、nginx日誌介紹Nginx日誌對於統計、系統服務排錯很有用。Nginx日誌主要分為兩種:access_log(訪問日誌)和error_log(錯誤日誌)。通過訪問日誌我們可以得到用戶的

nginx日誌日誌切割

日誌管理 我們觀察nginx的server段,可以看到如下類似資訊 #access_log logs/host.access.log main; 這說明 該server, 它的訪問日誌的檔案是 logs/host.access.log ,使用的 格式”main”格式.除

nginx+lua openresty開發系列-(log日誌

最近搭建流媒體伺服器,其中涉及到一些http服務api的操作, 之前一直使用的是python django框架來處理這些資訊, 這次編譯的是nginx添加了lua模組, 就想著使用lua來完成這些功能, 減少服務的搭建。好久沒有lua開發了,現在突然發現好多東西都記不住了, 所以就藉著這

mysql系列三:mysql中各類日誌-技術流ken

1.前言 日誌檔案記錄了MySQL資料庫的各種型別的活動,MySQL資料庫中常見的日誌檔案有 查詢日誌,慢查詢日誌,錯誤日誌,二進位制日誌,中繼日誌 。下面分別對他們進行介紹。   2.查詢日誌   1.檢視查詢日誌變數 查詢日誌即檢視日誌記錄了所有對 My

Spring Boot 自定義日誌

本節內容基於 Spring Boot 2.0. 你所需具備的基礎 什麼是 Spring Boot? Spring Boot 核心配置檔案詳解 Spring Boot 開啟的 2 種方式 Spring Boot 自動配置原理、實戰 Spring Boot 2.x 啟動全過程原始碼分析

mysql binlog 日誌,恢復測試

二進位制日誌常用引數: max_binlog_size :單個二進位制日誌檔案的最大值,超過該值,則產生新的二進位制日誌檔案,並記錄到.index檔案,預設1G。 binlog_cache_size:  使用InnoDB時,所有未提交的事務會記錄到一個快取中,等待事務提交時

tomcat 日誌

1 tomcat  日誌詳解 1.1  tomcat 日誌配置檔案   tomcat 對應日誌的配置檔案:tomcat目錄下的/conf/logging.properties。   tomcat 的日誌等級有:日誌輸出級別:SEVERE (最高級別) > WARNING > INFO >

mysql二進位制日誌

一、什麼是二進位制日誌 二進位制日誌主要記錄mysql資料庫的變化,二進位制日誌包含所有更新了資料或者潛在更新了資料(如沒有匹配到任何行的delete語句),語句以時間的形式儲存,描述了資料的更改。二進位制日誌還包含執行每個更新資料庫語句的時間資訊,使用二進位制日誌的主要目的是最大可能的恢復資料庫。因為二進

併發垃圾回收器CMS介紹(日誌)

當使用CMS收集器時,當開始進行收集時,old代的收集過程如下所示: 1,首先jvm根據-XX:CMSInitiatingOccupancyFraction,-XX:+UseCMSInitiatingOccupancyOnly來決定什麼時間開始垃圾收集; 2,如果設定了-

Mysql的慢查詢日誌

引言 Mysql中比較重要的日誌包括二進位制日誌、relay_log(中繼日誌)、慢查詢日誌、redo_log、undo_log等,本篇來聊一聊mysql的慢查詢日誌。 程式中定位一個執行慢的SQL可以根據慢查詢日誌,預設情況下,慢查詢日誌禁用,因為開啟慢查詢日誌或多或少

Mysql慢查詢日誌(slow_query_log)

引言 Mysql中比較重要的日誌包括二進位制日誌、relay_log(中繼日誌)、慢查詢日誌、redo_log、undo_log等,本篇來聊一聊mysql的慢查詢日誌。 程式中定位一個執行慢的SQL可以根據慢查詢日誌,預設情況下,慢查詢日誌禁用,因為開啟慢查詢日誌或多或少的會對mysql

mysqlbinlog引數#摘錄自MySQL5.5文件

mysqlbinlog支援下面的選項: · ---help, -? 顯示幫助訊息並退出。 · ---database=db_name, -d db_name 只列出該資料庫的條目 (只用本地日誌)。 · --force-read, -f 使用該選項,如果mysqlbi

Spring Boot 日誌

日誌 如果看Spring boot 日誌,直接跳到 3 1、日誌框架 案例: 小張;開發一個大型系統; ​ 1、System.out.println(“”);將關鍵資料列印在控制檯;去掉?寫在一個檔案? ​ 2、框架來記錄系統的一些執行時

Spring Boot 學習之路——4.1 AOP註解方式實現列印日誌

以下內容轉自:https://www.cnblogs.com/lixiang1993/p/7447853.html1.宣告一個切面類,並把這個切面類加入到IOC容器中@Component@Aspectpublic class LogAspect{    @Pointcut(v

Oracle日誌

一、Oracle日誌分類 分三大類: Alert log files--警報日誌,Trace files--跟蹤日誌(使用者和程序), redo log 重做日誌(記錄資料庫的更改)。 本文主要關注Oracle的重做日誌。 重做日誌分為線上重做日誌和歸檔重做日誌。   o