同大多数关系型数据库一样,日志文件是MySQL数据库的重要组成部分。MySQL有几种不同的日志文件,通常包括错误日志文件,二进制日志,通用日志,慢查询日志,等等。这些日志可以帮助我们定位mysqld内部发生的事件,数据库性能故障,记录数据的变更历史,用户恢复数据库等等。本文主要描述通用查询日志。

1、MySQL日志文件系统的组成
   a、错误日志:记录启动、运行或停止mysqld时出现的问题。
   b、通用日志:记录建立的客户端连接和执行的语句。
   c、更新日志:记录更改数据的语句。该日志在MySQL 5.1中已不再使用。
   d、二进制日志:记录所有更改数据的语句。还用于复制。
   e、慢查询日志:记录所有执行时间超过long_query_time秒的所有查询或不使用索引的查询。
   f、Innodb日志:innodb redo log
   
   缺省情况下,所有日志创建于mysqld数据目录中。
   可以通过刷新日志,来强制mysqld来关闭和重新打开日志文件(或者在某些情况下切换到一个新的日志)。
   当你执行一个FLUSH LOGS语句或执行mysqladmin flush-logs或mysqladmin refresh时,则日志被老化。
   对于存在MySQL复制的情形下,从复制服务器将维护更多日志文件,被称为接替日志。

2、通用查询日志
   通用查询日志可以存放到一个文本文件或者表中,所有连接和语句被记录到该日志文件或表,缺省未开启该日志。
   通过--log[=file_name]或-l [file_name]选项启动它。如果没有给定file_name的值, 默认名是host_name.log。
   mysqld按照它接收的顺序记录语句到查询日志。这可能与执行的顺序不同。
   不同于更新日志和二进制日志,它们在查询执行后,但是任何一个锁释放之前记录日志。
   查询日志包含所有语句,而二进制日志不包含只查询数据的语句。
   服务器重新启动和日志刷新不会产生新的一般查询日志文件。

3、通用查询日志的系统变量
   log_output=[none|file|table|file,table]  #通用查询日志输出格式
   general_log=[on|off]                     #是否启用通用查询日志
   general_log_file[=filename]              #通用查询日志位置及名字

4、通用查询日志的备份 
   在Linux或Unix中,你可以通过下面的命令重新命名文件
   并创建一个新文件:
   shell> mv hostname.log hostname-old.log
   shell> mysqladmin flush-logs
   shell> cp hostname-old.log to-backup-directory
   shell> rm hostname-old.log
   在Windows中,服务器打开日志文件期间不能重新命名日志文件。必须先停止服务器然后重新命名日志文件。然后重启服务器来创建新日志文件。

5、演示通用查询日志的使用

  1. a、启用通用查询日志
  2. --演示环境
  3. root@localhost[(none)]> show variables like '%version%';
  4. +-------------------------+------------------------------+
  5. | Variable_name           | Value                        |
  6. +-------------------------+------------------------------+
  7. | innodb_version          | 5.5.39                       |
  8. | protocol_version        | 10                           |
  9. | slave_type_conversions  |                              |
  10. | version                 | 5.5.39-log                   |
  11. | version_comment         | MySQL Community Server (GPL) |
  12. | version_compile_machine | x86_64                       |
  13. | version_compile_os      | Linux                        |
  14. +-------------------------+------------------------------+
  15. --查看系统变量
  16. root@localhost[(none)]> show variables like '%general%';
  17. +------------------+----------------------------+
  18. | Variable_name    | Value                      |
  19. +------------------+----------------------------+
  20. | general_log      | OFF                        |
  21. | general_log_file | /var/lib/mysql/suse11b.log |
  22. +------------------+----------------------------+
  23. --查看当前的通用日志,显示无日志文件
  24. root@localhost[(none)]> system ls /var/lib/mysql/suse11b.log
  25. ls: cannot access /var/lib/mysql/suse11b.log: No such file or directory
  26. --设置变量general_log以开启通用查询日志
  27. root@localhost[(none)]> set @@global.general_log=1;
  28. Query OK, 0 rows affected (0.00 sec)
  29. --再次查看通用日志文件已存在
  30. root@localhost[(none)]> system ls /var/lib/mysql/suse11b.log
  31. /var/lib/mysql/suse11b.log
  32. root@localhost[(none)]> select * from tempdb.tb1;  --执行查询
  33. +------+------+
  34. | id   | val  |
  35. +------+------+
  36. |    1 | jack |
  37. +------+------+
  38. --查看通用日志文件内容
  39. root@localhost[(none)]> system more /var/lib/mysql/suse11b.log
  40. /usr/sbin/mysqld, Version: 5.5.39-log (MySQL Community Server (GPL)). started with:
  41. Tcp port: 3306  Unix socket: /var/lib/mysql/mysql.sock
  42. Time                 Id Command    Argument
  43. 141003 16:18:12     4 Query     show variables like '%general%'
  44. 141003 16:18:55     4 Query     select * from tempdb.tb1
  45. b、更改通用查询日志位置
  46. root@localhost[(none)]> exit
  47. Bye
  48. suse11b:~ # service mysql stop
  49. Shutting down MySQL...                                          done
  50. suse11b:~ # mysqld --general_log_file=/tmp/suse11b.log --user=mysql &
  51. [1] 47009
  52. suse11b:~ # ps -ef|grep mysql|grep -v grep
  53. mysql    47009 44514  1 16:22 pts/0    00:00:00 mysqld --general_log_file=/tmp/suse11b.log --user=mysql
  54. root     47053 44514  0 16:22 pts/0    00:00:00 grep mysql
  55. suse11b:~ # mysql
  56. root@localhost[(none)]> system ls /tmp/suse11b.log
  57. ls: cannot access /tmp/suse11b.log: No such file or directory
  58. root@localhost[(none)]> show variables like '%gener%';
  59. +------------------+------------------+
  60. | Variable_name    | Value            |
  61. +------------------+------------------+
  62. | general_log      | OFF              |
  63. | general_log_file | /tmp/suse11b.log |
  64. +------------------+------------------+
  65. root@localhost[(none)]> set global general_log=on;
  66. Query OK, 0 rows affected (0.01 sec)
  67. --此时从系统变量看出,通用日志已经到/tmp目录下
  68. root@localhost[(none)]> show variables like '%gener%';
  69. +------------------+------------------+
  70. | Variable_name    | Value            |
  71. +------------------+------------------+
  72. | general_log      | ON               |
  73. | general_log_file | /tmp/suse11b.log |
  74. +------------------+------------------+
  75. --发布查询
  76. root@localhost[(none)]> select count(*) from tempdb.tb1;
  77. +----------+
  78. | count(*) |
  79. +----------+
  80. |        1 |
  81. +----------+
  82. --查看通用日志文件内容
  83. root@localhost[(none)]> system more /tmp/suse11b.log
  84. mysqld, Version: 5.5.39-log (MySQL Community Server (GPL)). started with:
  85. Tcp port: 3306  Unix socket: /var/lib/mysql/mysql.sock
  86. Time                 Id Command    Argument
  87. 141003 16:30:03     1 Query     show variables like '%gener%'
  88. 141003 16:30:09     1 Query     select count(*) from tempdb.tb1
  89. c、通用查询日志输出方式
  90. --可以输出为文件,表以及不输出,即TABLE,FILE,NONE
  91. --系统变量log_output
  92. root@localhost[(none)]> show variables like 'log_output';
  93. +---------------+-------+
  94. | Variable_name | Value |
  95. +---------------+-------+
  96. | log_output    | FILE  |
  97. +---------------+-------+
  98. --下面修改为输出为表方式
  99. root@localhost[(none)]> set global log_output='TABLE';
  100. Query OK, 0 rows affected (0.00 sec)
  101. root@localhost[(none)]> show variables like 'log_output';
  102. +---------------+-------+
  103. | Variable_name | Value |
  104. +---------------+-------+
  105. | log_output    | TABLE |
  106. +---------------+-------+
  107. --发布查询
  108. root@localhost[(none)]> select * from tempdb.tb1;
  109. +------+------+
  110. | id   | val  |
  111. +------+------+
  112. |    1 | jack |
  113. +------+------+
  114. --Author: Leshami
  115. --Blog  : http://blog.csdn.net/leshami
  116. root@localhost[(none)]> system more /tmp/suse11b.log
  117. mysqld, Version: 5.5.39-log (MySQL Community Server (GPL)). started with:
  118. Tcp port: 3306  Unix socket: /var/lib/mysql/mysql.sock
  119. Time                 Id Command    Argument
  120. 141003 16:30:03     1 Query     show variables like '%gener%'
  121. 141003 16:30:09     1 Query     select count(*) from tempdb.tb1
  122. 141003 16:31:00     1 Query     show variables like 'log_output'
  123. 141003 17:00:48     1 Query     set global log_output='TABLE'  #通用查询日志输出到文件仅仅记录到全局变量的修改
  124. --mysql.general_log记录了通用查询日志的信息
  125. root@localhost[(none)]> desc mysql.general_log;
  126. +--------------+------------------+------+-----+-------------------+-----------------------------+
  127. | Field        | Type             | Null | Key | Default           | Extra                       |
  128. +--------------+------------------+------+-----+-------------------+-----------------------------+
  129. | event_time   | timestamp        | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
  130. | user_host    | mediumtext       | NO   |     | NULL              |                             |
  131. | thread_id    | int(11)          | NO   |     | NULL              |                             |
  132. | server_id    | int(10) unsigned | NO   |     | NULL              |                             |
  133. | command_type | varchar(64)      | NO   |     | NULL              |                             |
  134. | argument     | mediumtext       | NO   |     | NULL              |                             |
  135. +--------------+------------------+------+-----+-------------------+-----------------------------+
  136. --从通用查询日志表里查看通用查询日志的内容
  137. root@localhost[(none)]> select thread_id,command_type,argument from mysql.general_log;
  138. +-----------+--------------+---------------------------------------------------------------+
  139. | thread_id | command_type | argument                                                      |
  140. +-----------+--------------+---------------------------------------------------------------+
  141. |         1 | Query        | show variables like 'log_output'                              |
  142. |         1 | Query        | select * from tempdb.tb1                                      |
  143. |         1 | Query        | desc mysql.general_log                                        |
  144. |         1 | Query        | select thread_id,command_type,argument from mysql.general_log |
  145. +-----------+--------------+---------------------------------------------------------------+
  146. root@localhost[(none)]> show variables like 'log_output';
  147. +---------------+-------+
  148. | Variable_name | Value |
  149. +---------------+-------+
  150. | log_output    | TABLE |
  151. +---------------+-------+
  152. --使用FILE,TABLE 2者混合输出通用日志
  153. root@localhost[(none)]> set global log_output='file,table';
  154. Query OK, 0 rows affected (0.00 sec)
  155. root@localhost[(none)]> select @@global.log_output;
  156. +---------------------+
  157. | @@global.log_output |
  158. +---------------------+
  159. | FILE,TABLE          |
  160. +---------------------+
  161. root@localhost[(none)]> insert into tempdb.tb1 values(2,'robinson');
  162. Query OK, 1 row affected (0.06 sec)
  163. root@localhost[(none)]> commit;
  164. Query OK, 0 rows affected (0.01 sec)
  165. --验证结果,表和文件里边存在通用的日志记录
  166. root@localhost[(none)]> system tail /tmp/suse11b.log|grep robinson
  167. 141003 17:41:54     2 Query     insert into tempdb.tb1 values(2,'robinson')
  168. root@localhost[(none)]> select thread_id,command_type,argument from mysql.general_log
  169. -> where argument like '%robinson%';
  170. +-----------+--------------+------------------------------------------------------------------------+
  171. | thread_id | command_type | argument                                                               |
  172. +-----------+--------------+------------------------------------------------------------------------+
  173. |         2 | Query        | insert into tempdb.tb1 values(2,'robinson')                            |
  174. |         2 | Query        | select thread_id,command_type,argument from mysql.general_log          |
  175. |           |              |    where argument like ''robinson''                                    |
  176. +-----------+--------------+------------------------------------------------------------------------+
  177. d、关闭通用查询日志
  178. --可以通过设置系统变量general_log来关闭通用查询日志,此时日志输出设置为FILE,TABLE
  179. root@localhost[(none)]> show variables like 'log_output';
  180. +---------------+------------+
  181. | Variable_name | Value      |
  182. +---------------+------------+
  183. | log_output    | FILE,TABLE |
  184. +---------------+------------+
  185. root@localhost[(none)]> set global general_log=off;
  186. Query OK, 0 rows affected (0.01 sec)
  187. root@localhost[(none)]> show variables like '%gener%';
  188. +------------------+------------------+
  189. | Variable_name    | Value            |
  190. +------------------+------------------+
  191. | general_log      | OFF              |
  192. | general_log_file | /tmp/suse11b.log |
  193. +------------------+------------------+
  194. root@localhost[(none)]> delete from tempdb.tb1 where id=2;
  195. Query OK, 1 row affected (0.12 sec)
  196. root@localhost[(none)]> commit;
  197. Query OK, 0 rows affected (0.00 sec)
  198. root@localhost[(none)]> system tail -n 1 /tmp/suse11b.log
  199. 141003 17:45:13     2 Query     set global general_log=off
  200. root@localhost[(none)]> select thread_id,command_type,argument from mysql.general_log
  201. -> where argument like '%delete%';
  202. Empty set (0.00 sec)
  203. --从上面的演示可知,尽管我们设置了log_output为FILE,TABLE,但general_log为OFF,通用日志无任何记录产生
  204. root@localhost[(none)]> set global log_output=none;
  205. Query OK, 0 rows affected (0.00 sec)
  206. root@localhost[(none)]> set global general_log=1;
  207. Query OK, 0 rows affected (0.00 sec)
  208. root@localhost[(none)]> truncate table tempdb.tb1;
  209. Query OK, 0 rows affected (0.01 sec)
  210. root@localhost[(none)]> system tail -n 1 /tmp/suse11b.log
  211. Time                 Id Command    Argument
  212. --通过上面的演示,在log_output=none,general_log=on的清下下无任何通用日志输出。

MySQL 通用查询日志(General Query Log)的更多相关文章

  1. MySQL 一般查询日志(General Query Log)

    与大多数关系型数据库,日志文件是MySQL数据库的一个重要组成部分.MySQL有几种不同的日志文件,通常包括错误日志文件,二进制日志,通用日志.慢查询日志,等等. 这些日志能够帮助我们定位mysqld ...

  2. MySQL四种类型日志:Error Log、General Query Log、Binary Log、Slow Query Log

    MySQL Server 有四种类型的日志——Error Log.General Query Log.Binary Log 和 Slow Query Log. 第一个是错误日志,记录mysqld的一些 ...

  3. MySQL:动态开启慢查询日志(Slow Query Log)

    前言 在开发中,高效能的程序 也包括 高效能的查询,所以优化SQL也是程序员必要技能之一.要优化就必须要有慢日志记录才可以知道哪些查询慢,然后反向去修改 慢日志设置方式 写入文件 写入数据库 实践操作 ...

  4. MySQL 通用查询日志和慢查询日志分析

    MySQL中的日志包括:错误日志.二进制日志.通用查询日志.慢查询日志等等.这里主要介绍下比较常用的两个功能:通用查询日志和慢查询日志. 1)通用查询日志:记录建立的客户端连接和执行的语句.2)慢查询 ...

  5. 关于MySQL 通用查询日志和慢查询日志分析

    MySQL中的日志包括:错误日志.二进制日志.通用查询日志.慢查询日志等等.这里主要介绍下比较常用的两个功能:通用查询日志和慢查询日志. 1)通用查询日志:记录建立的客户端连接和执行的语句. 2)慢查 ...

  6. 关于MySQL 通用查询日志和慢查询日志分析(转)

    MySQL中的日志包括:错误日志.二进制日志.通用查询日志.慢查询日志等等.这里主要介绍下比较常用的两个功能:通用查询日志和慢查询日志. 1)通用查询日志:记录建立的客户端连接和执行的语句. 2)慢查 ...

  7. MySQL 慢查询日志(Slow Query Log)

    同大多数关系型数据库一样.日志文件是MySQL数据库的重要组成部分.MySQL有几种不同的日志文件.通常包含错误日志文件,二进制日志,通用日志.慢查询日志.等等.这些日志能够帮助我们定位mysqld内 ...

  8. 深入学习MySQL 02 日志系统:bin log,redo log,undo log

    上一篇文章中,我们了解了一条查询语句的执行过程,按理说这篇应该讲一条更新语句的执行过程,但这个过程比较复杂,涉及到了好几个日志与事物,所以先梳理一下3个重要的日志,bin log(归档日志).redo ...

  9. mysql慢查询Slow Query Log和未使用索引(Not Using Indexes)查询配置和使用

    mysql的“慢查询”指的是超过了允许的最大查询时间(long_query_time)的sql语句,而“未使用索引”查询顾名思义就是查询语句没有使用到索引的sql语句. 慢查询配置和使用 在msyql ...

随机推荐

  1. MySQL返回影响行数的测试示例

    found_rows() : select row_count() : update delete insert 注:需要配合相应的操作一起使用,否则返回的值只是1和-1(都是不正确的值) 示例: d ...

  2. 插件uaredirect.js实现电脑版跳转到手机版网站

    一.介绍 这段时间,有好多朋友问我,跳转到手机版的那个JS是怎么写的.其实这个JS也不是我写的,是百度siteapp下的一款跳转的产品,使用起来很方便.你可以用这款JS跳转到手机版,也可以跳转到任何你 ...

  3. org.springframework.beans.factory.BeanCreationException: sqlSessionFactory

    sqlSessionFactory实例化错误 pom默认导入的jar包中存在低版本,导致实例化sqlSessionFactory错误,删除此jar包即可

  4. UVA-11491 Erasing and Winning (单调队列)

    题目大意:给一个数字(开头非0),拿掉其中的d个数字,使剩下的数字最大(前后顺序不能变). 题目分析:拿掉d个数字,还剩下n-d个数字.相当于从n个数字中按先后顺序选出n-d个数字使组成的数字最大,当 ...

  5. Tomcat : Invalid character found in the request target

    Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC ...

  6. Build Tree View Structure for SharePoint List Data

    博客地址 http://blog.csdn.net/foxdave 此文参考自->原文链接 版权归原作者所有,我只是进行一下大致的翻译 应坛友要求,帮助验证一下功能. SharePoint列表数 ...

  7. win7下解压安装mysql的方法

    在win7下通过解压安装mysql 5.7一直出现启动不成功,网上找了好久终于找到一个解决方法,记录一下: 1.解压下载的压缩包 2.在解压目录下,将my-default.ini改名为my.ini, ...

  8. Ethereum部署私有合约常见问题汇总

    常见问题 问题1 问题描述: callback contain no result Error: authentication needed: password or unlock 这里的问题是当前所 ...

  9. CNN中卷积层的计算细节

    原文链接: https://zhuanlan.zhihu.com/p/29119239 卷积层尺寸的计算原理 输入矩阵格式:四个维度,依次为:样本数.图像高度.图像宽度.图像通道数 输出矩阵格式:与输 ...

  10. C# 根据twitter的snowflake算法生成唯一ID

    C# 版算法: using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...