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