mysql 日誌詳解 MySQL日誌檔案詳解

2021-10-20 22:29:04 字數 2784 閱讀 3705

概述

日誌檔案是mysql資料庫的重要組成部分。mysql有幾種不同的日誌檔案,通常包括錯誤日誌檔案,二進位制日誌,通用日誌,慢查詢日誌,等等。這些日誌可以幫助我們定位mysqld內部發生的事件,資料庫效能故障,記錄資料的變更歷史,使用者恢復資料庫等等。本文主要描述mysql的各種日誌檔案。

1.錯誤日誌(error log)

2.二進位制日誌(binary log & binary log index)

3.通用查詢日誌(query log)

4.慢查詢日誌(slow query log)

6.更新日誌(update log)

錯誤日誌

錯誤日誌記錄了myql server執行過程中所有較為嚴重的警告和錯誤資訊,以及mysql

server 每次啟動和關閉的詳細資訊。在預設情況下,系統記錄錯誤日誌的功能是關閉的,錯誤資訊被輸出到標準錯誤輸出(stderr),如果要開啟系統記錄錯誤日誌的功能,需要在啟動時開啟-log-error 選項。錯誤日誌的預設存放位置在資料目錄下,以hostname.err 命 名。但是可以使用命令:―log-error[=file_name],修改其存放目錄和檔名。

為了方便維護需要,有時候會希望將錯誤日誌中的內容做備份並重新開始記錄,這候時 就可以利用 mysql 的 flush logs 命令來告訴 mysql 備份舊日誌檔案並生成新的日誌檔案。 備份檔案名以「.old」結尾。

二進位制日誌

二進位制日誌,也就是我們常說的 binlog,也是 mysql server 中最為重要的日誌之一。

當我們通過「―log-bin[=file_name]」開啟了記錄的功能之後,mysql 會將所有修改資料 庫資料的 query 以二進位制形式記錄到日誌檔案中。 當然,日誌中並不僅限於query 語句這麼 簡單,還包括每一條query 所執行的時間,所消耗的資源,以及相關的事務資訊,bi所nl以og 是事務安全的。

和錯誤日誌一樣,binlog 記錄功能同樣需要「―log-bin[=file_name]」引數的顯式指 定才能開啟,如果未指定file_name,則會在資料目錄下記錄為mysql-bin.** (*代表0~ 9 之間的某乙個數字,來表示該日誌的序號)。

binlog 還有其他一些附加選項引數:

「―max_binlog_size」設定 binlog 的最大儲存上限,當日誌達到該上限時,mysql 會 重新建立乙個日誌開始繼續記錄。不過偶爾也有超出該設定的binlog 產生,一般都是因為 在即將達到上限時,產生了乙個較大的事務,為了保證事務安全,mysql 不會將同乙個事務 分開記錄到兩個 binlog 中。

「―binlog-do-db=db_name」引數明確告訴 mysql,需要對某個(db_name)資料庫記 錄 binlog,如果有了「―binlog-do-db=db_name」引數的顯式指定,mysql 會忽略針對其他 資料庫執行的 query,而僅僅記錄針對指定資料庫執行的query。

「―binlog-ignore-db=db_name」與「―binlog-do-db=db_name」完全相反,它顯式指 定忽略某個(db_name)資料庫的binlog 記錄,當指定了這個引數之後,mysql 會記錄指定 資料庫以外所有的資料庫的 binlog。

「―binlog-ignore-db=db_name」與「―binlog-do-db=db_name」兩個引數有乙個共同 的概念需要大家理解清楚,引數中的db_name 不是指 query 語句更新的資料所在的資料庫,而是執行 query 的時候當前所處的資料庫。 不論更新哪個資料庫的資料,mysql 僅僅比較當 前連線所處的資料庫(通過use db_name切換後所在的資料庫)與引數設定的資料庫名,而 不會分析 query 語句所更新資料所在的資料庫。

mysql-bin.index 檔案(binary log index)的功能是記錄所有binary log的絕對路 徑,保證 mysql 各種執行緒能夠順利的根據它找到所有需要的binary log 檔案。

通用查詢日誌

查詢日誌記錄 mysql 中所有的 query,通過「―log[=fina_name]」來開啟該功能。由

於記錄了所有的 query,包括所有的 select,體積比較大,開啟後對效能也有較大的影響,所以請大家慎用該功能。 一般只用於跟蹤某些特殊的sql 效能問題才會短暫開啟該功能。預設的查詢日誌檔名為 hostname.log。

慢查詢日誌

顧名思義,慢查詢日誌中記錄的是執行時間較長的 query,也就是我們常說的 slow

query,通過設 ―log-slow-queries[=file_name]來開啟該功能並設定記錄位置和檔名,預設檔名為 hostname-slow.log,預設目錄也是資料目錄。

慢查詢日誌採用的是簡單的文字格式,可以通過各種文字編輯器檢視其中的內容。中其 記錄了語句執行的時刻,執行所消耗的時間,執行使用者,連線主機等相關資訊。mysql 還提 供了專門用來分析滿查詢日誌的工具程式mysqlslowdump,用來幫助資料庫管理人員解決可 能存在的效能問題。

在表空間中的 undo 資訊來保證的。redo 日誌中記錄了 innodb 所做的所有物理變更和事務 資訊,通過redo 日誌和 undo 資訊,innodb 保證了在任何情況下的事務安全性。innodb 的redo 日誌同樣預設存放在資料目錄下,可以通過innodb_log_group_home_dir來更改設定日誌的 存放位置,通過 innodb_log_files_in_group 設定日誌的數量。

更新日誌

更新日誌是 mysql 在較老的版本上使用的,其功能和 binlog 基本類似,只不過不是以

二進位制格式來記錄而是以簡單的文字格式記錄內容。自從 mysql增加了binlog功能之後,就很少使用更新日誌了。從版本5.0 開始,mysql 已經不再支援更新日誌了。

總結總結

mysql詳解日誌 MySQL日誌檔案詳解

概述 日誌檔案是mysql資料庫的重要組成部分。mysql有幾種不同的日誌檔案,通常包括錯誤日誌檔案,二進位制日誌,通用日誌,慢查詢日誌,等等。這些日誌可以幫助我們定位mysqld內部發生的事件,資料庫效能故障,記錄資料的變更歷史,使用者恢復資料庫等等。本文主要描述mysql的各種日誌檔案。mysq...

詳解MySQL日誌

binlog redo log與binlog的區別 什麼是undo log mysql日誌主要有三種 redo log redo log是mysql的innodb儲存引擎特有的日誌,redo log的作用是用來做持久化的,acid特性的永續性,就是redo log做的,它使得mysql擁有crash...

mysql日誌詳解

日誌分類 一 錯誤日誌。1 在配置檔案中的配置是 log error desktop igoodful.err 檢視引數的鍵值對 show variables like log error 二 二進位制日誌。1 記錄了對資料庫執行更改的所有操作,當然不包含select和show的操作。作用有兩個 恢...