翻译自 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. CentOS7的网卡启动不起来的问题

    这个问题在刚学Linux遇到的,centOS7的网卡启动不起来,导致建不了集群.如下图没有ifconf-env33网卡的IP 还有下面这个图>>> 如果你遇到了,呵呵呵,迷之微笑. ...

  2. hdu_1564: Play a game

    题目链接 看n的奇偶性,题解参见kuangbin的博客 http://www.cnblogs.com/kuangbin/archive/2013/07/22/3204654.html #include ...

  3. 安装 Docker Machine - 每天5分钟玩转 Docker 容器技术(45)

    前面我们的实验环境中只有一个 docker host,所有的容器都是运行在这一个 host 上的.但在真正的环境中会有多个 host,容器在这些 host 中启动.运行.停止和销毁,相关容器会通过网络 ...

  4. Java8 Stream代码详解+BenchMark测试

    Java8 Stream基础.深入.测试 1.基本介绍 1.创建方式 1.Array的Stream创建 1.直接创建 // main Stream stream = Stream.of("a ...

  5. sqlserver提高篇续集

    七.数据完整性 1.概念:数据一致性和准确性. 分类:域完整性.实体完整性.引用完整性. 解析:域完整性也叫列完整性是指一个数据集对某个列是否有效和确定是否允许为空值.实体完整性也叫行完整性 要求所有 ...

  6. BI服务器配置与客户端情况

    1. BI描述 FineBI是一款纯B/S端的商业智能分析服务平台:支持通过web应用服务器将其部署在服务器上,提供企业云服务器.用户端只需要使用一个浏览器即可进行服务平台的访问和使用.因此在配置使用 ...

  7. MyBatis 框架的搭建和配置

    MyBatis是支持定制化SQL.存储过程以及高级映射的优秀持久层框架.MyBatis 避免了几乎所有的JDBC代码和手动设置参数以及获取结果集.MyBatis可以对配置和原生Map使用简单的xml或 ...

  8. (转)关于eclipse的TestNG的插件安装方法

    背景:最近在学习spring 4.x时候,用到了testNG的测试方法,发现需要在eclipse安装testNG插件才能够正常进行单元测试. 1 插件安装 今天在配置eclipse+selenium+ ...

  9. JS浏览器对象:window对象、History、Location对象、Screen对象

    一.JS浏览器对象-window 1.window对象 window对象是BOM的核心,window对象指当前的浏览器窗口 所有JavaScript全局对象.函数以及变量均自动成为window对象的成 ...

  10. echarts添加点击事件

    由于工作需要,需要用echarts 进行展示图表,却又个新的需求,要点击展示的地方,同时下面出现table展示内容 如图所示: 一开始找了好多博客,发现都不好用,大部分都是用到了 var ecConf ...