mysql的日誌管理

2021-09-08 11:11:20 字數 4129 閱讀 1333

日誌操作是資料庫維護中最重要的手段之一,日誌檔案會記錄mysql伺服器的各種資訊,所以當mysql伺服器遭到意外損壞時,不僅可以通過日誌檔案來檢視出錯的原因,而且還可以通過日誌檔案進行資料恢復。

mysql的日誌檔案分為二進位制日誌,錯誤日誌,通用查詢日誌,慢查詢日誌。除了二進位制檔案外,其他日誌檔案都是文字檔案。預設情況下,mysql只會啟動錯誤日誌檔案,而其他日誌檔案則需要手動啟動才可以被啟動。

二進位制日誌:該日誌檔案會以二進位制形式記錄資料庫的各種操作,但是不記錄查詢語句。

錯誤日誌:該日誌檔案會記錄mysql伺服器啟動,關閉和執行時出錯等資訊。

通用查詢日誌:該日誌記錄mysql伺服器的啟動和關閉資訊,客戶端的連線資訊,更新資料記錄sql語句和查詢資料記錄sql語句。

慢查詢日誌:記錄執行時間超過指定時間的各種操作,通過工具分析慢日誌可以定位mysql伺服器效能瓶頸所在。

使用日誌有優點也有缺點。啟動日誌後,雖然可以實現對mysql伺服器進行維護,但是會降低mysql軟體的執行速度。

1. 操作二進位制日誌

二進位制日誌(binlog)詳細記錄了資料庫額變化情況,即sql語句中的ddl和dml語句,但是不包括資料記錄查詢操作。通過二進位制日誌檔案,可以詳細了解mysql資料庫中進行了哪些操作。

操作二進位制檔案包括啟動二進位制日誌,檢視二進位制日誌,停止二進位制日誌和刪除二進位制日誌。

1.1 啟動二進位制日誌

預設情況下,二進位制日誌是關閉的,如果想啟動二進位制日誌,可以通過設定mysql伺服器的配置檔案my.ini來實現,具體內容如下:

[

mysqld

]log

-bin[

=dir\[filename

]]

引數dir用來指定二進位制檔案的儲存路徑,引數filename用來指定二進位制檔案的檔名,具體格式為filename.number,其中number的格式為000001,000002,000003等。

在具體啟動二進位制日誌時,如果沒有設定引數dir和filename,二進位制日誌檔案將使用預設名字主機名-bin.number,儲存到預設目錄——資料庫資料檔案裡。

預設配置:

[

mysqld

]log

-bin

配置存放路徑:

[

mysqld

]log

-bin=d:\mysqllog\binlog

1.2 檢視二進位制日誌

語法如下:

mysqlbinlog filename.number

1.3 停止二進位制檔案

可以直接到my.ini裡面刪除[mysqld]組裡的log-bin內容即可。也可以通過命令set實現暫停二進位制日誌,具體命令內容如下:

set sql_log_bin=

0set sql_log_bin=

1

sql_log_bin的值為0時表示暫停二進位制日誌功能,sql_log_bin的值為1時表示重新開啟二進位制日誌功能。需要注意的是只有擁有super許可權的使用者,才可以執行set語句。

1.4 刪除二進位制檔案

如果要刪除二進位制檔案,需要通過執行命令reset master,purge masterlogs to和purge masterlogs before來實現。

語法如下:

reset master;

執行上述命令可以刪除所有二進位制檔案。

purge master logs to filename.number

執行上述命令,可以刪除編號小於number的所有二進位制日誌檔案。

purge master logs before 『yyyy-mm-dd hh:mm:ss』

執行上述命令,可以刪除指定時間(yyyy-mm-dd hh:mm:ss)之前所建立的所有二進行日誌檔案。

2. 操作錯誤日誌

2.1 啟動錯誤日誌

語法如下:

[

mysqld

]log

-error[

=dir\[filename

]]

2.2 檢視錯誤日誌

文字檔案,可直接用文字工具檢視

2.3 刪除錯誤日誌

mysqladmin –u root –p flush-logs

3. 操作通用查詢日誌

通用查詢日誌主要用來記錄使用者關於mysql伺服器的所有操作,包含mysql伺服器的啟動和關閉資訊,客戶端的連線資訊,更新資料記錄sql語句和查詢資料記錄sql語句。

3.1 啟動通用查詢日誌

[

mysqld

]log

[=dir\[filename

]]

以上方式需要重啟mysql伺服器才可以設定生效,還有一種方式通過設定mysql的環境變數進行動態的控制通用查詢日誌的開啟與關閉。通過設定環境變數general_log進行通用查詢日誌的動態控制,而不需要重啟mysql伺服器,操作如下:

set global general_log=on;

show variables like '%general_log%' \g;

3.2 檢視通用查詢日誌

文字檔案,可直接用文字工具檢視

3.3 停止通用查詢日誌

[

mysqld]#

log[

=dir\[filename

]]

上述需要重啟mysql伺服器,動態設定停止通用查詢日誌的另外一種方式:

set global general_log=

off;

3.4 刪除通用查詢日誌

mysqladmin –u root –p flush-logs

4. 操作慢查詢日誌

慢查詢日誌記錄執行時間超過指定時間的各種操作,通過工具分析慢日誌可以定位mysql伺服器效能瓶頸所在。

4.1 開啟慢查詢日誌

[

mysqld

]log

-slow-queries[

=dir\[filename]]

long_query_time

=n

上述需要重啟mysql伺服器,另外一種方式動態設定如下:

#通過設定環境變數slow_query_log進行慢查詢日誌的動態控制,on表示開啟

set global slow_query_log=on;

#設定慢查詢日誌最大允許的時間,單位為秒

set global long_query_time=

3;

4.2 檢視慢查詢日誌

文字檔案,可直接用文字工具檢視

4.3 分析慢查詢日誌

對應的工具為mysqldumpslow.pl,常用引數如下:

「-s」為分析慢查詢日誌時指定排序引數,可選的有:「al」表示平均鎖定時間,

「ar」表示平均返回記錄數,「at「表示平均查詢時間。「-t「引數表示只顯示指定的行數。

#分析慢查詢日誌

「-s at」表示將分析的結果按平均查詢時間排序,「-t 1」表示只顯示符合條件的第1條。

4.4 停止慢查詢日誌

[

mysqld]#

log-slow-queries[

=dir\[filename]]

#long_query_time

=n

注釋掉即可停止,但上述需要重啟mysql伺服器,另外一種方式動態設定如下:

#通過設定環境變數slow_query_log進行慢查詢日誌的動態控制,off表示關閉

set global slow_query_log=

off;

4.5 刪除慢查詢日誌

通過windows的刪除命令直接將滿查詢日誌刪除,然後使用以下命令重新建立對應檔案,語法如下:

刪除慢查詢日誌檔案:

重新重新整理慢查詢日誌:

mysqladmin –u root –p flush-logs

執行上述命令,mysql伺服器會建立乙個新的慢查詢日誌,此時慢查詢日誌為空。

mysql日誌管理

1,錯誤日誌 記錄啟動 執行或停止時出現的問題,一般也會記錄警告資訊。2,一般查詢日誌 記錄建立的客戶端連線和執行的語句。3,慢查詢日誌 記錄所有執行時間超過long query time秒的所有查詢或不使用索引的查詢,可以幫我們定位伺服器效能問題。1,錯誤日誌 錯誤日誌 記錄啟動 執行或停止時出現...

MySQL日誌管理

mysql日誌主要包含 錯誤日誌 一般查詢日誌 慢查詢日誌 二進位制日誌 中繼日誌 事務日誌。1.錯誤日誌 錯誤日誌大概記錄以下幾個方面的資訊 伺服器啟動和關閉過程中的資訊 未必是錯誤資訊,如mysql如何啟動innodb的表空間檔案的 如 何初始化自己的儲存引擎的等等 伺服器執行過程中的錯誤資訊 ...

MySQL 日誌管理

在 mysql 中,有 4 種不同的日誌,分別是錯誤日誌 二進位制日誌 查詢日誌和慢查詢日誌。錯誤日誌記錄了 mysql 啟動和停止時以及伺服器在執行過程中發生嚴重錯誤時的相關資訊。mysql show variables like log error variable name value log...