日誌操作是資料庫維護中最重要的手段之一,日誌檔案會記錄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...