生活随笔
收集整理的這篇文章主要介紹了
7、MySQL设置日志输出方式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
MySQL 的查詢日志支持寫入到文件或寫入數據表兩種輸出形式。啟用了普通查詢日志或慢查詢日志功能后,可以選擇讓服務器把日志寫入到日志文件、mysql 數據庫中的日志表、或者同時寫到這兩個地方。
可以通過以下命令查看日志輸出類型:
mysql
> SHOW VARIABLES
LIKE '%log_out%';
+
| Variable_name
| Value |
+
| log_output
| FILE |
+
1 row in set, 1 warning
(0.08 sec
)
結果顯示,日志輸出類型為 FILE。
要想在運行時更改日志輸出目標,可以在啟動服務器時,設置全局系統變量 log_output 的值,格式如下:
SET GLOBAL log_output
='value';
value 的值可以是:
- FILE:表示把日志寫入到文件。如果未指定 log_output 的值,默認為 FILE。
- TABLE:表示把日志寫入到 mysql 數據庫的 slow_log 或 general_log 表中。
- MySQL 可以同時支持 2 種日志存儲方式,配置的時候以逗號隔開,即 log_output=‘FILE,TABLE’。
需要注意的是,系統變量 log_output 只確定了日志使用什么輸出目標,并不會啟用日志功能。
相對于寫入到文件,日志寫入到數據表中要耗費更多的系統資源。因此,對于需要啟用查詢日志,又需要獲得更高的系統性能,建議優先選擇將日志寫入到文件。
日志表(slow_log 或 general_log)中的內容只允許查看,不允許修改,除非服務器自己進行更改。因此,你只能對日志表使用 SELECT 語句,不能使用 INSERT、DELETE 或 UPDATE 語句。不過,可以使用 TRUNCATE TABLE 語句來清空日志表。
例 1
首先設置日志寫入到日志表,然后查詢 test 數據庫中 tb_student 數據表的記錄,并查看 mysql 數據庫中的 slow_log 表中的記錄。SQL 語句和運行結果如下:
mysql
> SET GLOBAL log_output
='TABLE';
Query OK
, 0 rows affected
(0.00 sec
)
mysql
> SHOW VARIABLES
LIKE '%log_out%';
+
| Variable_name
| Value |
+
| log_output
| TABLE |
+
1 row in set, 1 warning
(0.01 sec
)
mysql
> use test
;
Database changed
mysql
> SELECT * FROM tb_student
;
+
| id
| name
|
+
| 1 | Java
|
| 2 | MySQL
|
| 3 | Python
|
+
3 rows in set (0.00 sec
)
mysql
> SELECT * FROM mysql
.slow_log \G
*************************** 1. row ***************************start_time:
2020-06-04 15:
25:
40.030420user_host: root
[root
] @ localhost
[::
1]query_time:
00:
00:
00.058887lock_time:
00:
00:
00.000000rows_sent:
0
rows_examined:
0db: test
last_insert_id:
0insert_id:
0server_id:
1sql_text:
TRUNCATE TABLE mysql
.slow_logthread_id:
11
*************************** 2. row ***************************start_time:
2020-06-04 15:
25:
52.229014user_host: root
[root
] @ localhost
[::
1]query_time:
00:
00:
00.000339lock_time:
00:
00:
00.000000rows_sent:
1
rows_examined:
0db: test
last_insert_id:
0insert_id:
0server_id:
1sql_text: Init DBthread_id:
11
*************************** 3. row ***************************start_time:
2020-06-04 15:
26:
00.867649user_host: root
[root
] @ localhost
[::
1]query_time:
00:
00:
00.000379lock_time:
00:
00:
00.000115rows_sent:
7
rows_examined:
7db: test
last_insert_id:
0insert_id:
0server_id:
1sql_text:
SELECT * FROM tb_studentthread_id:
11
3 rows in set (0.00 sec
)
結果顯示,超過慢查詢日志指定時間的 SQL 語句都寫入到了 mysql 數據庫的 slow_log 表中。
總結
以上是生活随笔為你收集整理的7、MySQL设置日志输出方式的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。