簡介: Mysql 中提供了多種類型的日誌文件,分別反映 Mysql 的不同信息,瞭解它們很有必要。 1、Error log ( 錯誤日誌 ) 錯誤日誌記錄了 Mysql Server 運行過程中所有較為嚴重的警告和錯誤信息,以及 Mysql Server 每次啟動和關閉的詳細信息。 在預設情況下, ...
簡介:
Mysql 中提供了多種類型的日誌文件,分別反映 Mysql 的不同信息,瞭解它們很有必要。
1、Error log ( 錯誤日誌 )
錯誤日誌記錄了 Mysql Server 運行過程中所有較為嚴重的警告和錯誤信息,以及 Mysql Server 每次啟動和關閉的詳細信息。
在預設情況下,系統記錄錯誤日誌的功能是關閉的( 我所使用的 Mysql 5.6 是開啟的 ),錯誤信息被輸出到標準錯誤輸出( Stderr )。
需要開啟系統記錄錯誤日誌功能時,需要在啟動時開啟 -log-error 選項。錯誤日誌預設存放在數據目錄下,以 hostname.err 命令。
可以使用 --log-error=file_name 的方式或在 my.cnf 中指定其存放的位置和文件名。
為了方便維護,可以通過 flush logs 來生成新的日誌文件( 要先將原有的日誌文件 mv 一下 )。
2、Binary log( 二進位日誌 )
二進位日誌,即 binlog 。也是 Mysql Server 中最為重要的日誌之一。
當我們通過 --log-bin=file_name 打開了二進位日誌功能之後,Mysql 會將所有修改資料庫的 query 以二進位的形式記錄到日誌文件中。
還包括每一條 query 所執行的時間、消耗的資源,以及相關的事務信息;所以 binlog 是事務安全的。
二進位日誌跟錯誤日誌一樣,binlog 記錄功能也需要 --log-bin=file_name 或 my.cnf 中指定來開啟;如果沒有指定 file_name ,會在數據目錄下生成 mysql-bin.******* 的日誌文件。
mysql-bin.index 文件的功能是記錄所有 Binary log 的絕對路徑,保證 Mysql 各種線程能順利根據它找到所需要的 Binary log 文件。
binlog 相關的其它參數:
--max_binlog_size ## 設置 binlog 的最大存儲上限,當日誌達到該上限時,Mysql 會重新生成一個新的日誌開始繼續記錄。
偶爾也會超出該上限,是因為在即將到達上限時,產生了一個較大的事務,為了保證事務安全,Mysql 不會將同一個事務存放到兩個 binlog 中。
--binlog-do-db=db_name ## 僅僅針對該 db_name 記錄 binlog ,而忽略針對其餘資料庫執行的 query 。
--binlog-ignore-db=db_name ## 與上一參數正好相反,忽略針對該資料庫的 query ,記錄其餘所有資料庫的 binlog 。
## 這兩參數指的 db_name 不是指 query 語句更新的數據所在的資料庫,而是執行 query 時所處的資料庫。( 感覺很好理解,說多了容易亂 )
3、Update log( 更新日誌 )
更新日誌是 Mysql 在較老版本上使用的,其功能跟 binlog 類似,只不過不是以二進位格式記錄,而是以簡單文本格式記錄內容。
從 Mysql 5.0 開始,Mysql 已經不再支持更新日誌了。
4、Query log( 查詢日誌 )
查詢日誌記錄 Mysql 中所有的 query ,通過 --log=file_name 來打開該功能。
由於該日誌記錄了所有的 query ,包括所有的 select ,體積比較大,開啟後會對性能有較大的影響,所以一般不開啟。
該日誌一般用於跟蹤某些特殊的 SQL 性能問題才會短暫開啟。預設文件名為 hostname.log ,位置也在數據目錄下。
5、Slow query log ( 慢查詢日誌 )
慢查詢日誌記錄的就是執行時間較長的 query 咯,即 Slow query 。
通過 --log-slow-queries=file_name 開打開此功能並設置文件位置和文件名,預設文件名為 hostname-slow.log ,位置同樣在數據目錄下。
慢查詢日誌採用的是簡單文本格式,可以通過各種文本編輯器查看其中的內容。
記錄了語句執行的時刻,所消耗的時間、執行的用戶、連接主機等相關信息。
Mysql 還提供了用於專門分析慢查詢日誌的工具 Mysqlslowdump ,用來幫助我們瞭解可能存在的性能問題。
6、Innodb redo log ( Innodb 的線上 redo 日誌 )
Innodb 是一個事務安全的存儲引擎,其事務安全性主要就是通過線上 redo 日誌和記錄在表空間中的 undo 信息來保證的。
redo 日誌中記錄了 Innodb 所做的所有物理變更和事務信息,通過 redo 日誌和 undo 信息,Innodb 保證了在任何情況下的事務安全性。
Innodb 的 redo 日誌同樣預設在數據目錄下,可以通過 innodb_log_group_home_dir 來更改其存放位置,通過 innodb_log_files_in_group 設置日誌數量。