mysql日誌型別

2021-10-23 07:00:05 字數 4294 閱讀 6605

**日誌型別*

*mysql日誌主要包含:錯誤日誌、查詢日誌、慢查詢日誌、事物日誌、二進位制日誌;

**錯誤日誌*

*在mysql資料庫中,錯誤日誌功能是預設開啟的。並且,錯誤日誌無法被禁止。預設情況下,錯誤日誌儲存在mysql資料庫的資料檔案中。錯誤日誌檔案通常的名稱為hostname.err。其中,hostname表示伺服器主機名。

錯誤日誌資訊可以自己進行配置的,錯誤日誌所記錄的資訊是可以通過log-error和log-warnings來定義的,其中log-err是定義是否啟用錯誤日誌的功能和錯誤日誌的儲存位置,log-warnings是定義是否將警告資訊也定義至錯誤日誌中。預設情況下錯誤日誌大概記錄以下幾個方面的資訊:伺服器啟動和關閉過程中的資訊(未必是錯誤資訊,如mysql如何啟動innodb的表空間檔案的、如何初始化自己的儲存引擎的等等)、伺服器執行過程中的錯誤資訊、事件排程器執行乙個事件時產生的資訊、在從伺服器上啟動伺服器程序時產生的資訊。

錯誤日誌可以使用log_err在主配置檔案中手動設定

在my.cnf中

[mysqld_safe]

log_error=/usr/local/mysql/***.err(名字可:以自己指定否則預設為主機名)修改完需要重啟mysql生效。

log_error可以直接定義為檔案路徑,也可以為on|off;log_warings只能使用1|0來定義開關啟動。

在mysql資料庫中,可以使用mysqladmin命令開啟錯誤日誌。**

# mysqladmin -uroot –p flush-logs**

或者進入mysql後使用語句

mysql> flush logs;

**二進位制日誌*

*二進位制日誌也叫作變更日誌,主要用於記錄修改資料或有可能引起資料改變的mysql語句,並且記錄了語句發生時間、執行時長、操作的資料等等。所以說通過二進位制日誌可以查詢mysql資料庫中進行了哪些變化。一般大小體積上限為1g。

檢視二進位制日誌開啟狀態:

其中log_bin可以直接定義為檔案路徑也可以定義為on|off。

開啟二進位制日誌:

在my.cnf配置檔案中【mysqld】中新增

[mysqld]

lshowog-bin=存放路徑/名稱

log-bin=/usr/local/mysql/

data

/mysql-bin.log

之後重啟mysql即可。

mysql中檢視二進位制日誌:

mysql> show binary logs;

![在這裡插入描述](
因為二進位制日誌是以二進位制方式儲存的,不能直接讀取,需要使用mysql自帶的mysqlbinlog工具來進行檢視。**

# mysqlbinlog mysql-bin.000001 –d test2**

對應的一些引數說明:

預設其形式為filename.number,number的形式為000001、000002等。每次重啟mysql服務或執行mysql> flush logs;都會生成乙個新的二進位制日誌檔案,這些日誌檔案的number會不斷地遞增。除了生成上述的檔案外還會生成乙個名為filename.index的檔案。這個檔案中儲存所有二進位制日誌檔案的清單又稱為二進位制檔案的索引。

**設定日誌過期時間*

*:在配置檔案中my.cnf

expire_log_day=10

10的單位是天,這裡表示儲存10天的日誌,超過10天日誌會被自動刪除。

**恢復資料:*

*完全恢復:

mysqlbinlog mysql-bin.0001|mysql –uroot –p

但是如果是誤刪除了一張表,使用完全恢復是沒有用的,因為日誌裡面同樣也保留著刪除的sql語句,所以我們要恢復到誤操作之前的狀態,然後跳過操作的語句即可。

假設18:48誤刪除了一張表,這樣恢復它:

mysqlbinlog --stop-date='2017-11-30 18:47:59' mysql-bin.000001|mysql -uroot –p

跳過誤刪除的時間點,之後再執行:

mysqlbinlog --

start

-date='2017-11-30 18:49:00' mysql-bin.000001|mysql -uroot –p

有時有可能因為系統版本的問題,以上方法行不通,可以將二進位制導出到乙個sql檔案中,再直接根據sql語句進行恢復,這樣匯出後log.sql就有sql語句,把語句複製到工具或者phpmyadmin裡執行。

mysqlbinlog mysql-bin-log.000001 >log.sql

**查詢日誌

通用查詢日誌*

*預設情況下查詢日誌是關閉的。由於查詢日誌會記錄使用者的所有操作,其中還包含增刪查改等資訊,在併發操作大的環境下會產生大量的資訊從而導致不必要的磁碟io,會影響mysql的效能的。如若不是為了除錯資料庫的目的建議不要開啟查詢日誌。

檢視查詢日誌是否開啟:

*

*慢查詢日誌*

*慢查詢日誌是用來記錄執行時間超過指定時間的查詢語句。通過慢查詢日誌,可以查詢出哪些查詢語句的執行效率很低,以便進行優化。一般建議開啟,它對伺服器效能的影響微乎其微,但是可以記錄mysql伺服器上執行了很長時間的查詢語句。可以幫助我們定位效能問題的。

慢查詢日誌是以什麼時間為標準的?

一般都是通過long_query_time選項來設定這個時間值,時間以秒為單位,可以精確到微秒。如果查詢時間超過了這個時間值(預設為10秒),這個查詢語句將被記錄到慢查詢日誌中。

檢視伺服器預設時間值

mysql> show global variables like 'long%'

;查詢log:

mysql> show global variables like '%log%'

;

**慢查詢日誌的開啟:*

*vi .

/my.cnf

[mysqld]

slow_query_log=1

log_slow_queries=/usr/local/mysql/

data

/***-slow.log

或者在資料庫中直接定義開啟:

mysql>set global slow_query_log=1;

mysql> set session long_query_time=0.01;

檢視時間是否更改:

mysql> show variables like 'long%'

;檢視慢查詢日誌開啟狀態:

mysql> show global variables like '%slow%';*

*事務日誌:*

*事務日誌(innodb特有的日誌)可以幫助提高事務的效率。使用事務日誌,儲存引擎在修改表的資料時只需要修改其記憶體拷貝,再把改修改行為記錄到持久在硬碟上的事務日誌中,而不用每次都將修改的資料本身持久到磁碟。事務日誌採用追加的方式,因此寫日誌的操作是磁碟上一小塊區域內的順序i/o,而不像隨機i/o需要在磁碟的多個地方移動磁頭,所以採用事務日誌的方式相對來說要快得多。事務日誌持久以後,記憶體中被修改的資料在後台可以慢慢的刷回到磁碟。目前大多數的儲存引擎都是這樣實現的,我們通常稱之為預寫式日誌,修改資料需要寫兩次磁碟。

如果資料的修改已經記錄到事務日誌並持久化,但資料本身還沒有寫回磁碟,此時系統崩潰,儲存引擎在重啟時能夠自動恢復這部分修改的資料。具有的恢復方式則視儲存引擎而定。

小結:mysql資料庫各種日誌必須熟悉,在以後的工作中非常重要。

mysql日誌型別

日誌型別 mysql日誌主要包含 錯誤日誌 查詢日誌 慢查詢日誌 事物日誌 二進位制日誌 日誌是mysql資料庫的重要組成部分。日誌檔案中記錄著mysql資料庫執行期間發生的變化 也就是說用來記錄mysql資料庫的客戶端連線狀況 sql語句的執 況和錯誤資訊等。當資料庫遭到意外的損壞時,可以通過日誌...

mysql 日誌型別

mysql有四種日誌 所有日誌 general log 慢查詢日誌 slow log 二進位制日誌 binary log 錯誤日誌 error log windows下在my.ini裡配置,linux下在my.cnf裡配置。general log記錄使用者所有的操作。general log on g...

4種常見的MySQL日誌型別

1 錯誤日誌 記錄啟動 執行或停止mysqld時出現的問題 log error d mysql log err.txt 2 查詢日誌 記錄建立的客戶端連線和執行的所有語句 包括錯誤的 log d mysql log.txt 3 二進位制日誌 記錄所有更改資料的語句 還用於主從複製 log bin d...