MySQL日志分析
一、MySQL日志簡介
(一)、mysql日志的種類,一般來說,日志有五種,分別為:
(二)、 查詢當前日志記錄的狀況:
(三)、MySQL日志狀態圖示
二、MySQL日志分類
(一)、錯誤日志
說明:錯誤日志默認是啟用的,一般存放在數據目錄下,如無特別指定,默認以 $HOSTNAME.err 為文件名稱。錯誤日志中除了記錄錯誤相關的信息之外,默認還記錄 MySQL 初始化、啟動和關閉過程中輸出的信息(未必是錯誤信息)、event scheduler 運行時所產生的信息、主從架構中的從 I/O Thread 的信息,還包括服務器運行過程中所發生的任何嚴重的錯誤信息。通常,當數據庫出現問題不能正常啟動,應當首先想到的就是查看錯誤日志。從中可以看到此日志文件記錄的MySQL數據庫啟動和關閉信息。
–log-error=[file-name]用來指定錯誤日志存放的位置。
如果沒有指定[file-name],默認hostname.err(hostname為主機名)做為文件名,默認存放在DATADIR目錄中。也可以將log-error配置到my.cnf文件中,這樣可省去每次啟動mysqld時都手工指定–log-error.
MySQL客戶端可以通過下列方法來獲取錯誤日志的詳細位置:
mysql> show variables like ‘log_error’;
±---------------------±------------------------------------------------------+
| Variable_name | Value |
±---------------------±------------------------------------------------------+
| log_error | D:\ProgramFiles\MySQL\Data\jevo.err |
±----------------------±-----------------------------------------------------+
1 row in set (0.00 sec)
錯誤日志-記錄級別
錯誤日志文件的記錄級別:錯誤日志有3個level等級:error、warning 和information。(二)、二進制日志
二進制日志主要用來記錄操作MySQL數據庫中的寫入性操作(增刪改,但不包括查詢),相當于sqlserver中的完整恢復模式下的事務日志文件。
二進制日志的作用:1、用于復制,配置了主從復制的時候,主服務器會將其產生的二進制日志發送到slave端,slave端會利用這個二進制日志的信息在本地重做,實現主從同步。2、用戶恢復,MySQL可以在全備和差異備份的基礎上,利用二進制日志進行基于時間點或者事物Id的恢復操作。原理雷同于主從復制的日志重做。
開啟二進制日志:開啟二進制日志需要指定一個log-bin參數的路徑,比如:log_bin="D:\phpStudy\MySQL\mysql_log\log_bin"。開始二進制日志之后會自動生成一個管理二進制日志的log_bin_index文件。log_bin選項也顯示為on,即開啟了二進制日志。
MySQL客戶端可以通過下列方法來獲取二進制日志的詳細位置:
mysql> show variables like ‘log_bin’;
±---------------------±----------------+
| Variable_name | Value |
±---------------------±-----------------+
| log_bin | ON |
±----------------------±----------------+
1 row in set (0.00 sec)
(三)、通用查詢日志
mysql> show variables like ‘%general_log%’;
±--------------------±---------------------------------------+
| Variable_name | Value |
±---------------------±--------------------------------------+
| general_log | ON |
| general_log_file | /var/lib/mysql/DB-Server.log |
±----------------------±--------------------------------------+
2 rows in set (0.00 sec)
(四)、慢查詢日志
MySQL的慢查詢日志是MySQL提供的一種日志記錄,它用來記錄在MySQL中響應時間超過閥值的語句,具體指運行時間超過long_query_time值的SQL,則會被記錄到慢查詢日志中。long_query_time的默認值為10,意思是運行10S以上的語句。默認情況下,Mysql數據庫并不啟動慢查詢日志,需要我們手動來設置這個參數,當然,如果不是調優需要的話,一般不建議啟動該參數,因為開啟慢查詢日志會或多或少帶來一定的性能影響。慢查詢日志支持將日志記錄寫入文件,也支持將日志記錄寫入數據庫表。
慢查詢設置的相關參數
slow_query_log :是否開啟慢查詢日志,1表示開啟,0表示關閉。 log-slow-queries :舊版(5.6以下版本)MySQL數據庫慢查詢日志存儲路徑??梢圆辉O置該參數,系統則會默認給一個缺省的文件host_name-slow.log slow-query-log-file:新版(5.6及以上版本)MySQL數據庫慢查詢日志存儲路徑。可以不設置該參數,系統則會默認給一個缺省的文件host_name-slow.log long_query_time :慢查詢閾值,當查詢時間多于設定的閾值時,記錄日志。 log_queries_not_using_indexes:未使用索引的查詢也被記錄到慢查詢日志中(可選項)。 log_output:日志存儲方式。log_output='FILE'表示將日志存入文件,默認值是'FILE'。 log_output='TABLE'表示將日志存入數據庫,這樣日志信息就會被寫入到mysql.slow_log表中。MySQL數據庫支持同時兩種日志存儲方式,配置的時候以逗號隔開即可,如:log_output='FILE,TABLE'。日志記錄到系統的專用日志表中,要比記錄到文件耗費更多的系統資源,因此對于需要啟用慢查詢日志,又需要能夠獲得更高的系統性能,那么建議優先記錄到文件。注意:找到mysql的安裝目錄,找到my.ini文件夾在[mysqld]處加入以下代碼開啟慢查詢,永久有效。
#開啟慢查詢 slow_query_log = ON #log-slow-queries:代表MYSQL慢查詢的日志存儲目錄,此目錄文件一定要有寫權限; #最長執行時間 (查詢的最長時間,超過了這個時間則記錄到日志中) . long_query_time = 5 #慢查詢日志存儲方式 log_output='FILE' log-slow-queries="C:/Program Files (x86)/MySQL/MySQL Server 5.0/log/mysql-slow.log" #沒有使用到索引的查詢也將被記錄在日志中 log-queries-not-using-indexes = ON三、修改MySQL配置參數-日志參數
(一)、動態修改(臨時修改,重啟失效)
(二)、永久修改
1、說明
在配置文件中(my.ini或my.cnf)添加配置信息后,重啟MySQL后就是永久修改,永久生效。直到再次修改配置信息并重啟MySQL為止。
總結
- 上一篇: jQuery中each()的用法
- 下一篇: MySQL之算术表达式、聚合函数及GRO