2019年3月20日 星期三

【MYSQL】日志種類及說明


錯誤日志:
參數路徑設定:log-error = [file_name]
若無設定[file_name],mysql將使用錯誤日志名host_name.err來命名

  • mysql啟動或停止
  • 服務器運行過程中任何嚴重的錯誤訊息
通用日志:
參數路徑設定:log = [file_name] 或 -l  [file_name] 
若無設定[file_name],mysql將默認名host_name.log命名
  • 所有連接和語句都會被記錄到日志文件中
190320 11:30:41 1040 Query show databases
190320 11:30:48 1040 Query SELECT DATABASE()
1040 Init DB test
1040 Query show databases
1040 Query show tables
1040 Field List modules 
190320 11:30:50 1040 Query show tables
190320 11:31:04 1040 Query select * from modules
190320 11:31:32 1040 Query drop table modules
190320 11:31:34 1040 Quit

**可查詢客戶端的執行SQL語句,但通用日志開啟後,可能在短短幾小時就塞爆硬碟空間 ,亦會影響性能。

二進制日志:
參數路徑設定:log-bin = [file_name] 
參數設定二進制日志的大小:max_binlog_size = [file_size]
達到設定大小後,會自行切換新的二進制檔案。mysql-bin.000001即切換至mysql-bin.000002
  • 包含更新數據或已經潛在的更新數據的語句,語句以事件的形式保存。
  • 包含每個更新數據執行的時間,不包含未修改語句的部份!
  • 用於恢復數據之用。
  • 記錄形式分:statement(語句級)、row(行級)、mixed(混合型)
# at 80326418 事件的起始點
#190307 14:50:40 server id 1  end_log_pos 80326560 CRC32 0xc2452c35  Query thread_id=2 exec_time=1112676    error_code=0 
/*語句執行的時間 end_log_pos是下個記錄的起始點,也就是上個事件的終點*/
/*thread_id指執行SQL線程的ID
exec_time在主從庫有不同的含義,主指執行所花費的時間;在從則指這事件結束時間再減去主庫上開始執行的時間,差異同滯後程度。error_code為錯誤狀況0表示正常。*/
SET TIMESTAMP=1551941440/*!*/;
SET PASSWORD FOR 'root'@'localhost'='*A4B6157319038724E3560894F7F932C8886EBFCF'
/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
慢日志:
參數路徑設定:log-slow-queries = [file_name]
若無設定[file_name],mysql將使用錯誤日志名slow.log來命名
參數設定慢查詢時間:slow_query_log = 1 指超過一秒的的SQL將寫入慢日志內。

沒有留言:

張貼留言

【MYSQL】MYSQL的SYS表說明(版本8.0)

mysql> use sys Reading table information for completion of table and column names You can turn off this feature to get a quicker s...