MySQL 日志管理
錯誤日志:
記錄內容:
包含了當MySQLd啟動和停止時,以及服務器在運行過程中發生任何嚴重錯誤時的相關信息文件位置和格式:
可以用--log-error[=file_name]選項來指定mysqld保存錯誤日志文件的位置。如果沒有給定file_name值,MySQLd使用錯誤日志名host_name.err 並在數據目錄中寫入日志文件
BINLOG:
記錄內容:
二進制日志包含了所有更新了數據或者已經潛在更新了數據(例如,沒有匹配任何行的一個DELETE)的所有語句。語句以“事件”的形式保存,它描述數據更改文件位置和格式:
當用--log-bin[=file_name]選項啟動時,MySQLd寫入包含所有更新數據的SQL命令的日志文件。如果未給出file_name值, 默認名為-bin後面所跟的主機名。如果給出了文件名,但沒有包含路徑,則文件被寫入數據目錄
查看binlog內容:
shell> MySQLbinlog log-file
刪除日志:
RESET MASTER;//刪除所有binlog日志,新日志編號從頭開始
PURGE MASTER LOGS TO 'mysql-bin.010';//刪除MySQL-bin.010之前所有日志
PURGE MASTER LOGS BEFORE '2003-04-02 22:46:26'
;// 刪除2003-04-02 22:46:26之前產生的所有日志
相關選項:
1. --binlog-do-db=db_name
告訴主服務器,如果當前的數據庫(即USE選定的數據庫)是db_name,應將更新記錄到二進制日志中。其它所有沒有明顯指定的數據庫被忽略
2. --binlog-ignore-db=db_name
告訴主服務器,如果當前的數據庫(即USE選定的數據庫)是db_name,不應將更新保存到二進制日志中
要想記錄或忽視多個數據庫,使用多個選項,為每個數據庫指定相應的選項。
3. -innodb-safe-binlog
使用此選項和sync_binlog=N(每寫N次日志同步磁盤)全局變量將使得事務能夠記錄的更加安全
4. 具有SUPER權限的客戶端可以通過SET SQL_LOG_BIN=0語句禁止將自己的語句記入二進制記錄
查詢日志
記錄內容:
記錄了客戶端的所有語句,而二進制日志不包含只查詢數據的語句文件位置和格式:
用--log[=file_name]或-l [file_name]選項啟動它。如果沒有給定file_name的值,默認名是host_name.log。
慢查詢日志:
記錄內容:
記錄包含所有執行時間超過long_query_time秒的SQL語句的日志文件。獲得初使表
鎖定的時間不算作執行時間。
文件位置和格式
用--log-slow-querIEs[=file_name]選項啟動它。如果沒有給出file_name值, 默認為主機名,後綴為-slow.log。如果給出了文件名,但不是絕對路徑名,文件則寫入數據目錄。
快速查看:
使用MySQLdumpslow 命令獲得日志中顯示的查詢摘要來處理慢查詢日志,例如:
[zzx@bj37 data]$ MySQLdumpslow bj37-slow.log
其他選項:
在MySQL 5.1中,通過--log-slow-admin-statements服務器選項,你可以請求將慢管理語句,例如OPTIMIZE TABLE、ANALYZE TABLE和ALTER TABLE寫入慢查詢日志