MySQL 服务日志
翻译自 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 服务日志的更多相关文章
- [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 ...
- MYSQL 服务无法启动,错误日志:InnoDB: .\ibdata1 must be writable
这几天安装MYSQL 5.7版本的时候,出现了服务无法启动的问题,尝试了各种修改配置文件my.ini的方法都不行,查看到错误日志,一般错误日志在C:\Program Files\MySQL\MySQL ...
- CentOS 7下MySQL服务启动失败的解决思路
今天,启动MySQL服务器失败,如下所示: [root@spark01 ~]# /etc/init.d/mysqld start Starting mysqld (via systemctl): Jo ...
- MySQL服务 - 客户端工具mysql及mysqladmin使用介绍
mysql客户端: mysql工具是MySQL官方提供的连接工具,用户可以通过mysql连接到mysqld上进行一系列的SQL操作.mysql工具有两种模式:交互模式和命令行模式.交互模式指令需要连接 ...
- MySQL 安装和启动服务,“本地计算机 上的 MySQL 服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止。”
MySQL 安装和启动服务,以及遇到的问题 MySQL版本: mysql-5.7.13-winx64.zip (免安装,解压放到程序文件夹即可,比如 C:\Program Files\mysql-5. ...
- Win7系统中提示:本地无法启动MySQL服务,报的错误:1067,进程意外终止的解决方法。
Win7系统中提示:本地无法启动MySQL服务,报的错误:1067,进程意外终止的解决方法. 在本地计算机无法启动MYSQL服务错误1067进程意外终止.这种情况一般是my.ini文件配置出错了1.首 ...
- 不停止MySQL服务增加从库的两种方式
不停止MySQL服务增加从库的两种方式 转载自:http://lizhenliang.blog.51cto.com/7876557/1669829 现在生产环境MySQL数据库是一主一从,由于业务量访 ...
- Mysql打开日志信息
还可参考博客:http://pangge.blog.51cto.com/6013757/1319304 1)怎么查看mysql是否启用了日志 mysql>show variables like ...
- MySQL 5.7 for Windows 解压缩版 MySQL 服务无法启动
MySQL 5.7 for Windows 解压缩版配置安装 http://jingyan.baidu.com/article/f3ad7d0ffc061a09c3345bf0.html basedi ...
随机推荐
- UDP和多线程服务器
UDP: UDP是数据报文传输协议,这个传输协议比较野蛮,发送端不需要理会接收端是否存在,直接就发送数据,不会像TCP协议一样建立连接.如果接收端不存在的话,发送的数据就会丢失,UDP协议不会去理会数 ...
- Oozie时出现org.apache.oozie.service.ServiceException: E0103: Could not load service classes, Cannot load JDBC driver class 'com.mysql.jdbc.Driver'
不多说,直接上干货! 问题详情 查看你的$OOZIE_HOME/logs 我的是/home/hadoop/app/oozie-4.1.0-cdh5.5.4/logs/oozie.log文件 [hado ...
- hihocoder_1014: Trie树(Trie树模板题)
题目链接 #include<bits/stdc++.h> using namespace std; ; struct T { int num; T* next[]; T() { num=; ...
- Linux下Tomcat8.0.44安装使用Apr
听说Apr可以提高tomcat很多的性能,配置具体如下1.安装apr 1.5.2 [root@ecs-3c46 ]# cd /usr/local/src [root@ecs-3c46 src]# wg ...
- QT QT creator QTsdk的区别
Qt是一个跨平台的C++图形用户界面应用程序框架.它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能.Qt是完全面向对象的,很容易扩展,并且允许真正地组件编程. QT Creator 跨平台 ...
- Cinnamon桌面是怎么回事儿
(linux mint 18.2 用户截图) Cinnamon的由来 在GNOME 3之前,GNOME是根据传统的桌面比拟(Desktop metaphor)而设计,到了GNOME 3便被GNOME ...
- 给ubuntu的swap分区增加容量
1.创建一个 Swap 文件. mkdir swap cd swap sudo dd if=/dev/zero of=swapfile bs=1024 count=100000 出现下列提示,上面命令 ...
- 微信客户端+微信公众平台+新浪云SAE+Arduino+WS100(控制LED)
第一步:准备 1.智能手机微信客户端或微信电脑版 2.注册微信公众平台 https://mp.weixin.qq.com 3.注册新浪账号 http://www.sinacloud.com 4.拥有一 ...
- git入门(3)git checkout 和git branch分支的创建和删除
在一个项目中,需要多人同时开发,协同coding 要求: 开发时请用开发分支daily/0.0.1, 禁止直接使用master分支开发新建分支 git checkout -b daily/0.0.1 ...
- 【学习OpenCV】——2.4对图像进行平滑处理
作者基于WIN10+VS2015+OpenCV3.0.0 (本人在学习的时候参考了xiahouzuoxin 的有关文章,在此感谢 ) 图像平滑与图像模糊是同一概念,主要用于图像的去噪.平滑要使用滤波器 ...