日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

7、MySQL设置日志输出方式

發布時間:2025/3/20 数据库 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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设置日志输出方式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。