標籤:
mysql 開啟 general log 後,所有的查詢語句都會記錄在 general log 檔案,檔案為唯讀方式,但這樣general log檔案會非常大,所以預設是關閉的。
但有時需要查錯等原因,暫時需要開啟general log。
開啟方法:
show global variables like ‘%general%‘;
set global general_log = on; // 開啟
set global general_log = off; // 關閉
general log 預設是記錄到文字檔,不過可以通過修改log_output=‘TABLE‘ 更改記錄到資料庫,在mysql db 會增加一個表general_log。
通過查看錶結構,是一個外部的csv檔案。
show global variables like ‘%log_output%‘;
set global log_output = ‘TABLE‘;
MySQL 事件跟蹤器 , MySQL 無須重啟服務 跟蹤 SQL , 也無須配置日誌
第一步 建立以下兩個 日誌表
CREATE TABLE `slow_log` ( `start_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `user_host` mediumtext NOT NULL, `query_time` time NOT NULL, `lock_time` time NOT NULL, `rows_sent` int(11) NOT NULL, `rows_examined` int(11) NOT NULL, `db` varchar(512) NOT NULL, `last_insert_id` int(11) NOT NULL, `insert_id` int(11) NOT NULL, `server_id` int(10) unsigned NOT NULL, `sql_text` mediumtext NOT NULL, `thread_id` bigint(21) unsigned NOT NULL ) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT=‘Slow log‘
CREATE TABLE `general_log` ( `event_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `user_host` mediumtext NOT NULL, `thread_id` bigint(21) unsigned NOT NULL, `server_id` int(10) unsigned NOT NULL, `command_type` varchar(64) NOT NULL, `argument` mediumtext NOT NULL ) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT=‘General log‘
第二步 在資料庫上開啟 查詢日誌
SET global general_log = 1;SET global log_output = ‘table‘;
第三步 查詢日誌
select * from mysql.general_log
第四步 在資料庫上關閉 查詢日誌
SET global general_log = 0;
第五步 清除資料庫 日誌
truncate table mysql.general_log;
mysql跟蹤和日誌