翻译自 dev.mysql.com/doc/refman/5.7/en/log-destinations.html

一、选择常规查询日志和慢查询输出日志的目的地

MySQL提供了灵活的控制对常规查询和慢查询的输出目的地,如果这些日志被启用,可能的目的地是日志文件或日志表general_log和slow_log(mysql 数据库),任何一个或全部的目的地都可以被选择。

1. 服务启动时控制日志

--log-output指定了日志输出的目的地,这个选项本身不会启动日志目的地

这个日志输出的可选值是逗号分隔的一系列单词TABLE(记录进tables)、FILE记录进文件,NONE(都不写),如果NONE在其他值之前,其他值会被忽略、

--log-output被忽略,则默认的日志目的地是FILE

general_log 系统变量控制常规日志输出到已选择的目的地。如果在启动时指定general_log,general_log的可选值1或0来启用或禁用日志;如需要指定日志文件的名称,可设置general_log_file变量。

相似的是,slow_query_log控制输出慢查询日志到已选择的目的地,设置slow_query_log_file来制定慢查询日志的文件名称;

如果只启用日志选项(没启用FILE目的地),服务打开对应的日志文件并写入启动信息到日志文件;然而,查询记录不会写入到文件,除非FILE目的地被选中。

例如:

  将常规查询写到日志表和日志文件,使用 --log-output=TABLE,FILE 选中这两个目的地 使用--general_log启用常规查询日志;

  将常规查询和慢查询只写入到日志表,使用--log-output=TABLE 选中表作为日志输出目的地,--general_log和--slow_query_log去开启这两个日志输出。

  而如果查询记录只写到日志文件,此时可以忽略掉--log-output=FILE这个默认选项。

[zheng@localhost ~]$ sudo /etc/rc.d/init.d/mysqld start --log-output=FILE,TABLE --general_log --slow_query_log
Starting MySQL. SUCCESS! 

2.运行时控制日志输出

全局系统变量log_output 表示当前的日志输出目的地,这个可以在运行时修改来改变日志输出目的地

全局变量general_log  slow_query_log表示常规查询和慢查询已启用(ON)或禁用(OFF),你可以在运行时设置这些变量来控制日志是否启用。

全局变量general_log_file slow_query_log_file 指示常规查询和慢查询的文件名称,可以在服务启动或者运行时设置这些变量来改变日志文件的名称。

为当前会话开启或禁用日志,可以设置sql_log_off变量来控制启用ON和禁用OFF

2.1 查看日志输出目的地

mysql> show variables like '%log_output%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_output    | FILE  |
+---------------+-------+
 row in set

2.2将日志输出到表有以下好处

(1) 日志具有标准的格式。要查看当前日志表的结构,可以使用 show create table mysql.general_log; show create table mysql.slow_log;

(2) 日志内容可以通过SQL语句进行访问。这使得可以执行满足特定条件的日志选择查询。例如,搜索有关于特定客户端的查询内容(用来识别来自客户端的问题查询),这种方式比使用日志文件更加简单。

(3)日志可以被能够远程连接并发出查询客户端进行访问(如果客户端有合适的日志表权限),这样就没必要登录服务主机和直接访问文件系统。

2.3 日志表有以下特点

(1) 总的来说,日志表是首要目的是提供一个接口给用户来观察服务的运行,而不介入服务的运行时执行。

(2) 创建表 修改表 删掉表 可用在日志表,对于修改和删除表,该表不能是正在使用的,必须被禁用。

(3) 默认,日志表使用CSV存储引擎,以逗号分割的格式写入数据。对于能够访问包含日志表数据的.csv文件的用户,这些文件可以方便地导入进其他程序,比如电子表格(能够处理CSV输入)。

(4) 日志表可以改为使用MyISAM存储引擎,但不能修改正在使用的日志表。首先要把日志表禁用才行。除了CSV和MyISAM这两个存储引擎,其他都不可以作为日志表的存储引擎。

(5) 为了修改或删掉日志表而禁用日志,你可以使用如下策略

SET @old_log_state = @@global.general_log;
SET GLOBAL general_log = 'OFF';
ALTER TABLE mysql.general_log ENGINE = MyISAM;
SET GLOBAL general_log = @old_log_state;

(6)在日志表上执行清空表(truncate table)是可行的。它可以用在清除过期日志记录。

(7)重命名表是可行的,你可以原子性地重命名表,比如

USE mysql;
DROP TABLE IF EXISTS general_log2;
CREATE TABLE general_log2 LIKE general_log;
RENAME TABLE general_log TO general_log_backup, general_log2 TO general_log;

(8) 检查表(check table)也是可行的

(9) 锁住表不能用在日志表上,插入删除更新也不能用在日志表。这些操作只能被服务内部执行。

(10) flush tables with read lock 和 read only 系统变量对于日志表没有影响,服务器可以随时写入日志表。

(11) 日志表记录不被写入二进制日志,也不会备份到从服务器。

(12)刷新日志表和日志文件,分别使用 flush tables 和 flush logs.

(13) 日志表不允许分区。

(14) mysqldump 备份重建表语句,所以在加载dump文件后日志表不会丢失,但日志表内容不会备份。

MySQL 服务日志的更多相关文章

  1. [MySQL Reference Manual] 5 MySQL 服务管理

    5. MySQL 服务管理 5. MySQL 服务管理 5.1 The Mysql Server 5.2 Mysql 服务日志 5.2.1 选择General query log和slow query ...

  2. MYSQL 服务无法启动,错误日志:InnoDB: .\ibdata1 must be writable

    这几天安装MYSQL 5.7版本的时候,出现了服务无法启动的问题,尝试了各种修改配置文件my.ini的方法都不行,查看到错误日志,一般错误日志在C:\Program Files\MySQL\MySQL ...

  3. CentOS 7下MySQL服务启动失败的解决思路

    今天,启动MySQL服务器失败,如下所示: [root@spark01 ~]# /etc/init.d/mysqld start Starting mysqld (via systemctl): Jo ...

  4. MySQL服务 - 客户端工具mysql及mysqladmin使用介绍

    mysql客户端: mysql工具是MySQL官方提供的连接工具,用户可以通过mysql连接到mysqld上进行一系列的SQL操作.mysql工具有两种模式:交互模式和命令行模式.交互模式指令需要连接 ...

  5. MySQL 安装和启动服务,“本地计算机 上的 MySQL 服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止。”

    MySQL 安装和启动服务,以及遇到的问题 MySQL版本: mysql-5.7.13-winx64.zip (免安装,解压放到程序文件夹即可,比如 C:\Program Files\mysql-5. ...

  6. Win7系统中提示:本地无法启动MySQL服务,报的错误:1067,进程意外终止的解决方法。

    Win7系统中提示:本地无法启动MySQL服务,报的错误:1067,进程意外终止的解决方法. 在本地计算机无法启动MYSQL服务错误1067进程意外终止.这种情况一般是my.ini文件配置出错了1.首 ...

  7. 不停止MySQL服务增加从库的两种方式

    不停止MySQL服务增加从库的两种方式 转载自:http://lizhenliang.blog.51cto.com/7876557/1669829 现在生产环境MySQL数据库是一主一从,由于业务量访 ...

  8. Mysql打开日志信息

    还可参考博客:http://pangge.blog.51cto.com/6013757/1319304 1)怎么查看mysql是否启用了日志 mysql>show variables like ...

  9. MySQL 5.7 for Windows 解压缩版 MySQL 服务无法启动

    MySQL 5.7 for Windows 解压缩版配置安装 http://jingyan.baidu.com/article/f3ad7d0ffc061a09c3345bf0.html basedi ...

随机推荐

  1. JavaScript 的 作用域

    在看了几本书之后的一些理解和自己的想法.   作用域,变量的作用范围   在ES6之前 变量的声明   只有var可以声明变量属于某个作用域,并且,也只有全局作用域和函数作用域. (没有var声明的变 ...

  2. 小哈学Python第三课-字符集编码

    table.hovertable { font-family: verdana, arial, sans-serif; font-size: 11px; color: #333333; border- ...

  3. ASP.NET MVC HttpPostedFileBase文件上传

    HttpPostedFileBase文件上传,支持多文件一次上传,如有图片,则支持略缩图保存 文件传输信息封装 /// <summary> /// 文件生成方式 /// </summ ...

  4. WIN10下设置惠普HP1050等打印机打印颜色,只打黑白或彩色

    今天同事问了一个问题,如何在WIN10下,设置惠普打印机只打印黑白, 上网搜了下,没有找到任何信息,只有在WIN8前系统设置的内容,经过几番折腾,得出此文. WIN10下设置惠普HP1050等打印机打 ...

  5. nyoj_120: 校园网络

    题目链接 要加边使一个图成为一个强连通分量,只需加max(出度为0的点数,入度为0的点数)条边(可以不使用tarjan算法).题目数据有点弱,网上一些人所谓 结果 = 出度为0的点的数量+入度为0的点 ...

  6. The request sent by the client was syntactically incorrect问题解决

    The request sent by the client was syntactically incorrect意思嘛,google翻译一下 通过日志不难看出,是由参数不匹配造成的. 所以对于Da ...

  7. Framework7 索引列表插件的问题

    前言 Framework7 作为移动端的开发框架的优良之处已经无需多言.现在已经有了 React 和 Vue 版本,之前在项目中用过 F7 + vue 的开发方式,无论是效率还是产出都近乎完美.有时间 ...

  8. Azure 认知服务 (4) 计算机视觉API - 读取图片中的文字 (OCR)

    <Windows Azure Platform 系列文章目录> 微软Azure认知服务的计算机视觉API,还提供读取图片中的文字功能 在海外的Windows Azure认知服务的读取图片功 ...

  9. CVE-2016-3714 - ImageMagick 命令执行

    ImageMagick是一款使用量很广的图片处理程序,很多厂商都调用了这个程序进行图片处理,包括图片的伸缩.切割.水印.格式转换等等.但近来有研究者发现,当用户传入一个包含『畸形内容』的图片的时候,就 ...

  10. 移动玩具[HAOI2008]

    题目描述 在一个4*4的方框内摆放了若干个相同的玩具,某人想将这些玩具重新摆放成为他心中理想的状态,规定移动时只能将玩具向上下左右四个方向移动,并且移动的位置不能有玩具,请你用最少的移动次数将初始的玩 ...