mysql系列詳解三:mysql中各類日誌詳解-技術流ken
阿新 • • 發佈:2018-11-10
1.前言
日誌檔案記錄了MySQL資料庫的各種型別的活動,MySQL資料庫中常見的日誌檔案有 查詢日誌,慢查詢日誌,錯誤日誌,二進位制日誌,中繼日誌 。下面分別對他們進行介紹。
2.查詢日誌
1.檢視查詢日誌變數
查詢日誌即檢視日誌記錄了所有對 MySQL 資料庫請求的資訊,不論這些請求是否得到了正確的執行。預設為 主機名.log
mysql> show global variables like "%gen%log%"; +------------------+------------------------------------+ | Variable_name | Value | +------------------+------------------------------------+ | general_log | OFF | | general_log_file | /data/mysql/mysql3306/data/ken.log | +------------------+------------------------------------+ 2rows in set (0.00 sec)
2.查詢日誌變數詳解
1 log on|off: 指定是否記錄查詢日誌 <<< mysql5.6開始就棄用該選項 2 general_log: 指定是否記錄查詢日誌 3 log_output none|table|file: 指定將記錄到的查詢儲存到什麼位置 4 file: 儲存成一個檔案 5 table: 儲存成一張表 6 none: 不記錄7 general_log_file: 指定將查詢日誌儲存成哪個檔案、叫什麼名
2.慢查詢日誌
1.檢視慢查詢日誌變數
慢查詢日誌用來記錄響應時間超過閾值的SQL語句,所以我們可以設定一個閾值,將執行時間超過該值的所有SQL語句都記錄到慢查詢日誌檔案中。該閾值可以通過引數 slow_launch_time
來設定,預設為2秒。
1 mysql> show global variables like "%slow%"; 2 +---------------------------+----------+ 3| Variable_name | Value | 4 +---------------------------+----------+ 5 | log_slow_admin_statements | OFF | 6 | log_slow_slave_statements | ON | 7 | slow_launch_time | 2 | 8 | slow_query_log | ON | 9 | slow_query_log_file | slow.log | 10 +---------------------------+----------+ 11 5 rows in set (0.00 sec)
2.慢查詢日誌變數詳解
1 slow_query_log on|off: 指定是否啟用慢查詢日誌 2 slow_query_log_file: 指定慢查詢日誌檔案 3 slow_launch_time: 指定在多長時間內沒有執行完額查詢是慢查詢 4 log_output: 指定將記錄到的查詢儲存到什麼位置
3.錯誤日誌
1.檢視錯誤日誌變數
錯誤日誌檔案對MySQL的啟動,執行,關閉過程進行了記錄。
1 mysql> show global variables like "%error%"; 2 +---------------------+--------------+ 3 | Variable_name | Value | 4 +---------------------+--------------+ 5 | binlog_error_action | ABORT_SERVER | 6 | log_error | ./error.log | 7 | log_error_verbosity | 3 | 8 | max_connect_errors | 100000 | 9 | max_error_count | 64 | 10 | slave_skip_errors | OFF | 11 +---------------------+--------------+ 12 6 rows in set (0.00 sec)
2.錯誤日誌變數詳解
1 log_error: 指定錯誤日誌的檔案及其路徑 2 log_warnings: 指定將哪個級別的警告日誌記錄到錯誤日誌中 3 sql_warnings: 指定是否記錄在執行sql語句時候所觸發的經過資訊
4.二進位制日誌
1.關於二進位制日誌以及二進位制日誌變數
二進位制日誌記錄了對資料庫執行更改的所有操作,但是不包括 select
和 show
這類操作,因為這類操作對資料本身並沒有修改,如果你還想記錄select和show操作,那隻能使用查詢日誌了,而不是二進位制日誌。
此外,二進位制還包括了執行資料庫更改操作的時間和執行時間等資訊。 二進位制日誌主要有以下幾種作用 :
- 恢復(recovery) : 某些資料的恢復需要二進位制日誌,如當一個數據庫全備檔案恢復後,我們可以通過二進位制的日誌進行
point-in-time
的恢復 - 複製(replication) : 通過複製和執行二進位制日誌使得一臺遠端的 MySQL 資料庫(一般是slave 或者 standby) 與一臺MySQL資料庫(一般為master或者primary) 進行實時同步
- 審計(audit) :使用者可以通過二進位制日誌中的資訊來進行審計,判斷是否有對資料庫進行注入攻擊
1 mysql> show global variables like "%bin%"; 2 +--------------------------------------------+--------------------------------------------+ 3 | Variable_name | Value | 4 +--------------------------------------------+--------------------------------------------+ 5 | bind_address | * | 6 | binlog_cache_size | 1048576 | 7 | binlog_checksum | CRC32 | 8 | binlog_direct_non_transactional_updates | OFF | 9 | binlog_error_action | ABORT_SERVER | 10 | binlog_format | ROW | 11 | binlog_group_commit_sync_delay | 0 | 12 | binlog_group_commit_sync_no_delay_count | 0
...
2.二進位制日誌變數詳解
1 log_bin on|off: 也是指定是否啟用二進位制日誌(全域性的) 2 log_bin_basename /path/to/binlog: 指定二進位制日誌的檔案的基名 3 log_bin_index /path/to/binlog.index: 指定二進位制日誌檔案的索引檔案 4 binlog_format row|mixex|statement: 指定基於那種方式進行記錄 5 sync_binlog #: 指定隔多久將快取中的資訊重新整理到二進位制日誌檔案中。 6 -->每次提交事務,會將快取中的記憶體重新整理到二進位制日誌檔案中。 7 -->預設每個sql語句是一個事務,而且預設事務會自動提交,所以,預設的效能很差 8 max_binlog_size #: 指定二進位制日誌檔案的上限,超過上限回滾動 9 max_binlog_cache_size #: 指定二進位制日誌快取空間大小,空間被填滿,會自動滾動 10 sql_log_off on|off: 是否將一般的查詢操作記錄到二進位制日誌中 11 sql_log_bin on|off: 也是指定是否啟用二進位制日誌(會話級別) 12 log_bin_trust_function_creators on|off: 指定是否允許建立可能導致不安全的函式
3.檢視二進位制日誌檔案
對於二進位制日誌檔案來說,不像錯誤日誌檔案,慢查詢日誌檔案那樣用cat,vim等命令可以檢視,它需要通過 MySQL 提供的工具 mysqlbinlog
1 [[email protected] ~]# mysqlbinlog /data/mysql/mysql3306/logs/mysql-bin.000001 2 /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/; 3 /*!50003 SET @[email protected]@COMPLETION_TYPE,COMPLETION_TYPE=0*/; 4 DELIMITER /*!*/; 5 # at 4 6 #181012 0:34:24 server id 1003306 end_log_pos 123 CRC32 0x27fde4a9 Start: binlog v 4, server v 5.7.23-log created 181012 0:34:24 at startup 7 ROLLBACK/*!*/; 8 BINLOG ' 9 kHu/Ww8qTw8AdwAAAHsAAAAAAAQANS43LjIzLWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 10 AAAAAAAAAAAAAAAAAACQe79bEzgNAAgAEgAEBAQEEgAAXwAEGggAAAAICAgCAAAACgoKKioAEjQA 11 Aank/Sc= 12 '/*!*/; 13 # at 123 14 #181012 0:34:24 server id 1003306 end_log_pos 154 CRC32 0x4e3fc05f Previous-GTIDs 15 # [empty] 16 # at 154 17 #181012 0:34:26 server id 1003306 end_log_pos 177 CRC32 0x368d3215 Stop 18 SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/; 19 DELIMITER ; 20 # End of log file 21 /*!50003 SET [email protected]_COMPLETION_TYPE*/; 22 /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
5.中繼日誌
1.檢視中繼日誌日誌變數
用於實現mysql的主從複製
1 mysql> show global variables like "%relay%"; 2 +---------------------------+--------------------------------------------+ 3 | Variable_name | Value | 4 +---------------------------+--------------------------------------------+ 5 | max_relay_log_size | 134217728 | 6 | relay_log | relay-bin | 7 | relay_log_basename | /data/mysql/mysql3306/data/relay-bin | 8 | relay_log_index | /data/mysql/mysql3306/data/relay-bin.index | 9 | relay_log_info_file | relay-log.info | 10 | relay_log_info_repository | FILE | 11 | relay_log_purge | ON | 12 | relay_log_recovery | ON | 13 | relay_log_space_limit | 0 | 14 | sync_relay_log | 10000 | 15 | sync_relay_log_info | 10000 | 16 +---------------------------+--------------------------------------------+ 17 11 rows in set (0.00 sec)
2.二進位制日誌變數詳解
1 relay_log fileName: 指定中繼日誌的檔名。【檔名為空,表示禁用了中繼日誌】 2 relay_log_index: 索引表 3 relay_log_info_file: 記錄中繼日誌檔案的相關資訊 4 relay_log_purge: 指定是否自動刪除無用的中繼日誌檔案 5 relay_log_recovery: 是否可以對中繼日誌做自動恢復相關的配置 6 relay_log_space_limit: 指定中繼日誌可以佔用的空間大小(0表示不限制)