這篇文章主要介紹了mysql查詢日志指的是什么意思,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
1、查詢日志記錄了客戶端的所有操作語句,二進制不包含查詢數據的sql語句。
2、查詢日志記錄服務器收到的每一個查詢或命令。無論這些查詢或命令是否正確,甚至是否包含語法錯誤,查詢日志都會記錄下來。
記錄格式為{Time、Id、Command、Argument}。也正是因為mysql服務器需要不斷記錄日志,打開查詢日志會產生很大的系統費用。因此,Mysql默認關閉查詢日志。
實例
a、啟用通用查詢日志 --演示環境 root@localhost[(none)]> show variables like '%version%'; +-------------------------+------------------------------+ | Variable_name | Value | +-------------------------+------------------------------+ | innodb_version | 5.5.39 | | protocol_version | 10 | | slave_type_conversions | | | version | 5.5.39-log | | version_comment | MySQL Community Server (GPL) | | version_compile_machine | x86_64 | | version_compile_os | Linux | +-------------------------+------------------------------+ --查看系統變量 root@localhost[(none)]> show variables like '%general%'; +------------------+----------------------------+ | Variable_name | Value | +------------------+----------------------------+ | general_log | OFF | | general_log_file | /var/lib/mysql/suse11b.log | +------------------+----------------------------+ --查看當前的通用日志,顯示無日志文件 root@localhost[(none)]> system ls /var/lib/mysql/suse11b.log ls: cannot access /var/lib/mysql/suse11b.log: No such file or directory --設置變量general_log以開啟通用查詢日志 root@localhost[(none)]> set @@global.general_log=1; Query OK, 0 rows affected (0.00 sec) --再次查看通用日志文件已存在 root@localhost[(none)]> system ls /var/lib/mysql/suse11b.log /var/lib/mysql/suse11b.log root@localhost[(none)]> select * from tempdb.tb1; --執行查詢 +------+------+ | id | val | +------+------+ | 1 | jack | +------+------+ --查看通用日志文件內容 root@localhost[(none)]> system more /var/lib/mysql/suse11b.log /usr/sbin/mysqld, Version: 5.5.39-log (MySQL Community Server (GPL)). started with: Tcp port: 3306 Unix socket: /var/lib/mysql/mysql.sock Time Id Command Argument 141003 16:18:12 4 Query show variables like '%general%' 141003 16:18:55 4 Query select * from tempdb.tb1 b、更改通用查詢日志位置 root@localhost[(none)]> exit Bye suse11b:~ # service mysql stop Shutting down MySQL... done suse11b:~ # mysqld --general_log_file=/tmp/suse11b.log --user=mysql & [1] 47009 suse11b:~ # ps -ef|grep mysql|grep -v grep mysql 47009 44514 1 16:22 pts/0 00:00:00 mysqld --general_log_file=/tmp/suse11b.log --user=mysql root 47053 44514 0 16:22 pts/0 00:00:00 grep mysql suse11b:~ # mysql root@localhost[(none)]> system ls /tmp/suse11b.log ls: cannot access /tmp/suse11b.log: No such file or directory root@localhost[(none)]> show variables like '%gener%'; +------------------+------------------+ | Variable_name | Value | +------------------+------------------+ | general_log | OFF | | general_log_file | /tmp/suse11b.log | +------------------+------------------+ root@localhost[(none)]> set global general_log=on; Query OK, 0 rows affected (0.01 sec) --此時從系統變量看出,通用日志已經到/tmp目錄下 root@localhost[(none)]> show variables like '%gener%'; +------------------+------------------+ | Variable_name | Value | +------------------+------------------+ | general_log | ON | | general_log_file | /tmp/suse11b.log | +------------------+------------------+ --發布查詢 root@localhost[(none)]> select count(*) from tempdb.tb1; +----------+ | count(*) | +----------+ | 1 | +----------+ --查看通用日志文件內容 root@localhost[(none)]> system more /tmp/suse11b.log mysqld, Version: 5.5.39-log (MySQL Community Server (GPL)). started with: Tcp port: 3306 Unix socket: /var/lib/mysql/mysql.sock Time Id Command Argument 141003 16:30:03 1 Query show variables like '%gener%' 141003 16:30:09 1 Query select count(*) from tempdb.tb1 c、通用查詢日志輸出方式 --可以輸出為文件,表以及不輸出,即TABLE,FILE,NONE --系統變量log_output root@localhost[(none)]> show variables like 'log_output'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | log_output | FILE | +---------------+-------+ --下面修改為輸出為表方式 root@localhost[(none)]> set global log_output='TABLE'; Query OK, 0 rows affected (0.00 sec) root@localhost[(none)]> show variables like 'log_output'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | log_output | TABLE | +---------------+-------+ --發布查詢 root@localhost[(none)]> select * from tempdb.tb1; +------+------+ | id | val | +------+------+ | 1 | jack | +------+------+ --Author: Leshami --Blog : http://blog.csdn.net/leshami root@localhost[(none)]> system more /tmp/suse11b.log mysqld, Version: 5.5.39-log (MySQL Community Server (GPL)). started with: Tcp port: 3306 Unix socket: /var/lib/mysql/mysql.sock Time Id Command Argument 141003 16:30:03 1 Query show variables like '%gener%' 141003 16:30:09 1 Query select count(*) from tempdb.tb1 141003 16:31:00 1 Query show variables like 'log_output' 141003 17:00:48 1 Query set global log_output='TABLE' #通用查詢日志輸出到文件僅僅記錄到全局變量的修改 --mysql.general_log記錄了通用查詢日志的信息 root@localhost[(none)]> desc mysql.general_log; +--------------+------------------+------+-----+-------------------+-----------------------------+ | Field | Type | Null | Key | Default | Extra | +--------------+------------------+------+-----+-------------------+-----------------------------+ | event_time | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP | | user_host | mediumtext | NO | | NULL | | | thread_id | int(11) | NO | | NULL | | | server_id | int(10) unsigned | NO | | NULL | | | command_type | varchar(64) | NO | | NULL | | | argument | mediumtext | NO | | NULL | | +--------------+------------------+------+-----+-------------------+-----------------------------+ --從通用查詢日志表里查看通用查詢日志的內容 root@localhost[(none)]> select thread_id,command_type,argument from mysql.general_log; +-----------+--------------+---------------------------------------------------------------+ | thread_id | command_type | argument | +-----------+--------------+---------------------------------------------------------------+ | 1 | Query | show variables like 'log_output' | | 1 | Query | select * from tempdb.tb1 | | 1 | Query | desc mysql.general_log | | 1 | Query | select thread_id,command_type,argument from mysql.general_log | +-----------+--------------+---------------------------------------------------------------+ root@localhost[(none)]> show variables like 'log_output'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | log_output | TABLE | +---------------+-------+ --使用FILE,TABLE 2者混合輸出通用日志 root@localhost[(none)]> set global log_output='file,table'; Query OK, 0 rows affected (0.00 sec) root@localhost[(none)]> select @@global.log_output; +---------------------+ | @@global.log_output | +---------------------+ | FILE,TABLE | +---------------------+ root@localhost[(none)]> insert into tempdb.tb1 values(2,'robinson'); Query OK, 1 row affected (0.06 sec) root@localhost[(none)]> commit; Query OK, 0 rows affected (0.01 sec) --驗證結果,表和文件里邊存在通用的日志記錄 root@localhost[(none)]> system tail /tmp/suse11b.log|grep robinson 141003 17:41:54 2 Query insert into tempdb.tb1 values(2,'robinson') root@localhost[(none)]> select thread_id,command_type,argument from mysql.general_log -> where argument like '%robinson%'; +-----------+--------------+------------------------------------------------------------------------+ | thread_id | command_type | argument | +-----------+--------------+------------------------------------------------------------------------+ | 2 | Query | insert into tempdb.tb1 values(2,'robinson') | | 2 | Query | select thread_id,command_type,argument from mysql.general_log | | | | where argument like ''robinson'' | +-----------+--------------+------------------------------------------------------------------------+ d、關閉通用查詢日志 --可以通過設置系統變量general_log來關閉通用查詢日志,此時日志輸出設置為FILE,TABLE root@localhost[(none)]> show variables like 'log_output'; +---------------+------------+ | Variable_name | Value | +---------------+------------+ | log_output | FILE,TABLE | +---------------+------------+ root@localhost[(none)]> set global general_log=off; Query OK, 0 rows affected (0.01 sec) root@localhost[(none)]> show variables like '%gener%'; +------------------+------------------+ | Variable_name | Value | +------------------+------------------+ | general_log | OFF | | general_log_file | /tmp/suse11b.log | +------------------+------------------+ root@localhost[(none)]> delete from tempdb.tb1 where id=2; Query OK, 1 row affected (0.12 sec) root@localhost[(none)]> commit; Query OK, 0 rows affected (0.00 sec) root@localhost[(none)]> system tail -n 1 /tmp/suse11b.log 141003 17:45:13 2 Query set global general_log=off root@localhost[(none)]> select thread_id,command_type,argument from mysql.general_log -> where argument like '%delete%'; Empty set (0.00 sec) --從上面的演示可知,盡管我們設置了log_output為FILE,TABLE,但general_log為OFF,通用日志無任何記錄產生 root@localhost[(none)]> set global log_output=none; Query OK, 0 rows affected (0.00 sec) root@localhost[(none)]> set global general_log=1; Query OK, 0 rows affected (0.00 sec) root@localhost[(none)]> truncate table tempdb.tb1; Query OK, 0 rows affected (0.01 sec) root@localhost[(none)]> system tail -n 1 /tmp/suse11b.log Time Id Command Argument --通過上面的演示,在log_output=none,general_log=on的清下下無任何通用日志輸出。
感謝你能夠認真閱讀完這篇文章,希望小編分享的“mysql查詢日志指的是什么意思”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。