mysql日誌

mysql日誌

1、錯誤日誌
錯誤日誌文件包含 了mysql啓動或停止時,以及服務器在運行過程中發生任何嚴重錯誤時的相關信息。可以用--log-error[=file_name]選項來指定mysqld保存錯誤日誌文件的位置。當我們使用flush logs命令刷新日誌時,錯誤文件會被清空,並生成一個備份的錯誤日誌。
我們可以使用工具實時監控錯誤日誌,比如swatch,或者自已編寫腳本檢查錯誤日誌。也可以發送mysql錯誤日誌到系統日誌服務Syslog,這樣,我們就可以利用一些日誌分析工具集中分析和處理錯誤信息。

2、通用日誌
默認值 爲host_name.log,所有連接和語句都將被記錄到日誌文件中,如果懷疑在客戶端發生了錯誤並且想要確切地知道該客戶端發送給mysqld的語句,那麼該日誌可能會非常有用。生產環境中,下線一個業務的時侯,也可以打開這個日誌,檢查是否仍然有流量過來訪問。mysql按照它接收的順序將語句記錄到查詢日誌。這個順序可參與執行的順序不同。如下命令可以查詢到通用日誌的路徑。
mysql> show variables like '%gene%';
+------------------+------------------------------------+
| Variable_name | Value |
+------------------+------------------------------------+
| general_log | OFF |
| general_log_file | /usr/local/mysql/var/localhost.log |
+------------------+------------------------------------+

可以用命令 SET GLOB ALgeneral_log ON 打開通用日誌記錄。由於通用日誌記錄了所有的查詢,所以一定要記錄關閉它,否則,在一個生產繁忙的系統中,通用日誌在幾小時之內可能就會塞滿磁盤。

3、二進制日誌
二進制日誌包含了所有更新了數據或已經潛在更新了數據的語句。事件與event的形式保存,它描述了數據的更改信息。二進制日誌的主要目錄是恢復數據,因爲二進制日誌包含備份後進行的所有更新。
建議爲log-bin指定一個文件名,語句如下。
log-bin=/path/to/logmysql-bin
運行SHOW BINARY LOGS命令查看當前有哪些二進制文件。還可以用RESETmysql> SHOW BINARY LOGS;
+------------------+------------+
| Log_name | File_size |
+------------------+------------+
| mysql-bin.000082 | 1073742660 |
...
| mysql-bin.000083 | 296012982 |
+------------------+------------+
83 rows in set (0.00 sec)

還可以用RESET MASTER語句刪除所有的二進制日誌文件,或者用PURGE BINARY LOGS命令只刪除部分二進制文件。如下的例子將刪除部份二進制日誌,一直到mysql-bin.000005這個文件爲止。
mysql>purge binary logs to 'mysql-bin.000005';
具有SUPER權限的客戶端可以通過SET sql_log_bin=0語句禁止將自已的語句記入二進制記錄中。這在某些情況下很有用,比如進行數據庫的主主切換時,再或者進行數據庫的版本升級時。
我們可以用mysqlbinlog工具檢查二進制日誌文件。如果想要重新處理日誌上的語名,那麼這個工具將會很有用。倒好,可以用二建制日誌更新MySql數據庫,方法如下。
shell>mysqlbinlog log-file |mysql -h host -P port
默認情況下,並不是每次寫入時都會將二進制日誌與硬盤同步,可以設置sync_binlog全局變量爲N(1是最安全的值,但也是最慢的),使二進制日誌在每N進二進制日誌寫入後就與硬盤同步一次。
二進制日誌的格式:
一種是語句級(binlog_format=statement),一種是行級(binlog_format=row)。建議將記錄命令的形式設置爲混合模式(binlog_format=mixed)。

4、慢查詢日誌
當參數slow-query_log=1時,mysqld將記錄一下執行時間超過long_query_time秒的所有SQL語句的日誌文件。
慢查詢日誌可以用來找到執行時間很長的查夜晚,可以用於優化。但是,檢查又長又慢的查詢志志會很困難。可以使用mysqlddumpslow命令或pt-query-digest獲得日誌中顯示的查詢摘要來處理慢查詢日誌。

5、日誌文件維護
MySQL服務器可以創建各種不同的日誌文件,從面可以很容易地查看所進行的操作。但是,必須要定期清理這些文件,以確保日誌文件不會佔用太多的硬盤空間。到於錯誤日誌文件,一般情況下不會變得很大;慢查詢日誌在慢查詢很多的情況下可能會變得很大;對於二進制日誌文件,可以設置合適的過期策略,如expire-log-day = 10,該語句的意思是設置過期日期爲10天。注意不要用操作系統下的rm命令刪除日誌,這可能會導致你執行日誌清理的命令失敗,你可能需要手動編輯文件hostname-bin.index來反映實際的文件列表。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章