MySQL日誌文件

MySQL日誌文件


日誌文件記錄了影響MySQL數據庫的各類類型活動,MySQL數據庫中常見的日誌文件有錯誤日誌、二進制日誌、慢查詢日誌。
這些日誌文件爲DBA對數據庫優化、問題查找帶來了極大的便利。mysql

日誌的輸出格式


參數log_output指定了慢查詢輸出的格式,默認爲FILE,你能夠設置爲TABLE,而後就能夠在mysql架構下查詢相關的表了。sql

"日誌輸出方式"
mysql> show variables like 'log_output%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_output    | FILE  |
+---------------+-------+
1 row in set (0.00 sec)

"更改成TABLE"
mysql> set global log_output='TABLE';
Query OK, 0 rows affected (0.00 sec)

"輸出內容"
mysql> select event_time,user_host,argument  from general_log;
+---------------------+---------------------------+--------------------------------------------------------+
| event_time          | user_host                 | argument                                               |
+---------------------+---------------------------+--------------------------------------------------------+
| 2016-09-30 14:36:36 | root[root] @ localhost [] | show variables like 'log_output%'                      |
| 2016-09-30 14:37:17 | root[root] @ localhost [] | show tables                                            |
| 2016-09-30 14:37:29 | root[root] @ localhost [] | select * from general_log                              |
| 2016-09-30 14:37:36 | root[root] @ localhost [] | select * from general_log                              |
| 2016-09-30 14:38:03 | root[root] @ localhost [] | select * from general_log                              |
| 2016-09-30 14:38:30 | root[root] @ localhost [] | select event_time,user_host,argument  from general_log |
+---------------------+---------------------------+--------------------------------------------------------+

MySQL啓動/中止/重啓方式


1、啓動數據庫

  1. 使用 service 啓動:service mysqld start架構

  2. 使用 mysqld 腳本啓動:/etc/inint.d/mysqld startsocket

  3. 使用 mysqld_safe 啓動:mysqld_safe&優化

2、中止rest

  1. 使用 service 啓動:service mysqld stop日誌

  2. 使用 mysqld 腳本啓動:/etc/inint.d/mysqld stopcode

  3. mysqladmin shutdown索引

3、重啓

  1. 使用 service 啓動:service mysqld restart

  2. 使用 mysqld 腳本啓動:/etc/inint.d/mysqld restart

1.錯誤日誌


錯誤日誌文件對MySQL的啓動、運行、關閉過程進行了記錄。MySQL DBA在遇到問題時應該首先查看該文件。該文件不但記錄了出錯信息,也記錄一些警告信息或者正確的信息。

"經過 show variables like log_error來定位該文件"

mysql> show variables like 'log_error';
+---------------+------------------------+
| Variable_name | Value                  |
+---------------+------------------------+
| log_error     | /var/log/mysql/err.log |
+---------------+------------------------+
1 row in set (0.00 sec)

"文件內容"

160930 14:00:57 [Note] Event Scheduler: Killing the scheduler thread, thread id 1
160930 14:00:57 [Note] Event Scheduler: Waiting for the scheduler thread to reply
160930 14:00:57 [Note] Event Scheduler: Stopped
160930 14:00:57 [Note] Event Scheduler: Purging the queue. 9 events
160930 14:00:57  InnoDB: Starting shutdown...
160930 14:00:58  InnoDB: Shutdown completed; log sequence number 892930378
160930 14:00:58 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete

2.慢查詢日誌


設置一個閾值,將運行時間超過該值的全部SQL語句都記錄到慢查詢日誌文件中。
默認狀況下,MySQL數據庫並不啓動慢查詢日誌,你須要手工將這個參數設爲ON

"記錄慢查詢的時間閾值"
mysql> show variables like '%long%'
    -> ;
+---------------------------------------------------+----------+
| Variable_name                                     | Value    |
+---------------------------------------------------+----------+
| long_query_time                                   | 0.001000 |
+---------------------------------------------------+----------+
3 rows in set (0.05 sec)


2."查詢慢查詢日誌是否開啓"
mysql> show variables like 'log_slow_queries';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| log_slow_queries | OFF   |
+------------------+-------+
1 row in set (0.02 sec)
3."若是運行的SQL沒有索引,慢查詢日誌是否記錄"
mysql> show variables like 'log_queries_not_using_indexes';
+-------------------------------+-------+
| Variable_name                 | Value |
+-------------------------------+-------+
| log_queries_not_using_indexes | OFF   |
+-------------------------------+-------+
1 row in set (0.00 sec)

4."更改設置"
mysql> set global log_slow_queries='ON'
    -> ;
Query OK, 0 rows affected, 1 warning (0.05 sec)

3.查詢日誌


查詢日誌記錄了全部對MySQL數據庫請求的信息,不論這些請求是否獲得了正確的執行。

"打開查詢日誌"
mysql> set global general_log='on';
Query OK, 0 rows affected (0.00 sec)

"日誌所在位置"
mysql> show variables like 'general%';
+------------------+-------------------------------------+
| Variable_name    | Value                               |
+------------------+-------------------------------------+
| general_log      | ON                                  |
| general_log_file | /usr/local/mysql/data/localhost.log |
+------------------+-------------------------------------+

"文件內容"
mysql> system more /usr/local/mysql/data/localhost.log ;

Tcp port: 3306  Unix socket: /tmp/mysql.sock
Time                 Id Command    Argument
160930 14:25:15     3 Query     show variables like 'general%'
160930 14:25:31     3 Query     select * from general_log
160930 14:25:33     3 Query     select * from general_log
160930 14:25:34     3 Query     select * from general_log
160930 14:25:35     3 Query     select * from general_log
160930 14:25:36     3 Query     select * from general_log

4.二進制日誌


二進制日誌包含例如建立表、表數據更改等數據庫更改信息。也包含一些潛在可能修改的事件(好比一個delete命令,但沒有數據被刪除)。
二進制日誌也會包含數據更新的時長。

二進制日誌文件有兩個重要的做用:

1.遠程複製
能夠經過主機上的二進制日誌文件,將數據更改同步到備機。

2.數據恢復某些數據恢復操做須要用到二進制日誌文件恢復歷史備份後,可使用二進制文件從新執行備份後所作的操做,達到徹底恢復。

相關文章
相關標籤/搜索