MySQL日志功能详解查询、慢查询

MySQL日志:大量的IO操作不建议写到文件中

mysql> show global variables like ‘innodb%‘;
mysql> show global variables like ‘%log%‘;
 general_log                             | OFF 
 log                                     | OFF

【临时开启记录日志】

mysql> set global log=‘ON‘;
mysql> set global general_log=‘ON‘;
Query OK, 0 rows affected, 1 warning (0.08 sec)
 general_log                             | ON 
 log                                     | ON

【随便操作几次,会生成/mydata/data/pc0003.log 日志文件】

mysql> select * from classes;
[[email protected] data]# cat /mydata/data/pc0003.log 
/usr/local/mysql/bin/mysqld, Version: 5.5.45-log (Source distribution). started with:
Tcp port: 3306  Unix socket: /tmp/mysql.sock
Time                 Id Command    Argument
150911 14:09:39    1 Queryshow global variables like ‘%log%‘
150911 14:11:46    1 Queryset global general_log=‘ON‘
150911 14:13:53    1 Queryselect * from classes

【临时关闭】

mysql> set global log=‘off‘;此时设定相对下面的无用!

 mysql> set global general_log=‘off‘;
Query OK, 0 rows affected (0.03 sec)
mysql> select * from classes;
+---------+----------------+----------+
| ClassID | Class          | NumOfStu |
+---------+----------------+----------+
|       1 | Shaolin Pai    |       10 |
|       2 | Emei Pai       |        7 |
|       3 | QingCheng Pai  |       11 |
|       4 | Wudang Pai     |       12 |
|       5 | Riyue Shenjiao |       31 |
|       6 | Lianshan Pai   |       27 |
|       7 | Ming Jiao      |       27 |
|       8 | Xiaoyao Pai    |       15 |
|       9 | Liangshan      |       22 |
|      10 | TaoYuan        |       23 |
+---------+----------------+----------+
10 rows in set (0.00 sec)

【再看一看/mydata/data/pc0003.log 日志文件,只会记录到设定关闭的时刻。】

[[email protected] data]# cat /mydata/data/pc0003.log 
/usr/local/mysql/bin/mysqld, Version: 5.5.45-log (Source distribution). started with:
Tcp port: 3306  Unix socket: /tmp/mysql.sock
Time                 Id Command    Argument
150911 14:09:39    1 Queryshow global variables like ‘%log%‘
150911 14:11:46    1 Queryset global general_log=‘ON‘
150911 14:13:53    1 Queryselect * from classes
150911 14:21:49    1 Queryset global general_log=‘off

【设定日志输出到表中】

mysql> 
mysql> set global general_log=‘ON‘;
Query OK, 0 rows affected (0.01 sec)
mysql> set global log=‘ON‘;
Query OK, 0 rows affected, 1 warning (0.00 sec)
 
mysql> set global log_output=‘TABLE‘;
Query OK, 0 rows affected (0.00 sec)

【执行】

mysql> show global variables like ‘%log%‘;
mysql> select * from hellodb.classes;

【文件查看】没有刚才的操作记录

[[email protected] data]# cat /mydata/data/pc0003.log

【表查看】 记录到指定的位置了

mysql> select * from mysql.general_log;
+---------------------+---------------------------+-----------+-----------+--------------+------------------------------------+
| event_time          | user_host                 | thread_id | server_id | command_type | argument                           |
+---------------------+---------------------------+-----------+-----------+--------------+------------------------------------+
| 2015-09-11 14:32:51 | root[root] @ localhost [] |         1 |         1 | Query        | show global variables like ‘%log%‘ |
| 2015-09-11 14:33:19 | root[root] @ localhost [] |         1 |         1 | Query        | select * from hellodb.classes      |
| 2015-09-11 14:33:20 | root[root] @ localhost [] |         1 |         1 | Query        | select * from hellodb.classes      |
| 2015-09-11 14:35:46 | root[root] @ localhost [] |         1 |         1 | Query        | select * from mysql.general_log    |
+---------------------+---------------------------+-----------+-----------+--------------+------------------------------------+
4 rows in set (0.00 sec)

【不建议启用查询 日志,除非有特殊需求】

mysql> set global general_log=‘OFF‘;
Query OK, 0 rows affected (0.00 sec)
mysql> set global log=‘OFF‘;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> show global variables like ‘innodb%‘;

mysql> show global variables like ‘%log%‘;

查询日志

慢查询日志:查询执行时长超过指定时长的查询,即为慢查询

错误日志 应该启用,默认没有启用。

二进制日志:复制功能依赖于此日志

中继日志:

事务日志:提交才同步到文件中

随机I/O转换为顺序I/O

ACID:持久性

日志文件组:至少应该有两个日志文件;

注意:尽可能使用小事务以提升事务引擎的性能;

查询日志:

log={ON|OFF}:是否记录所有语句的日志信息于一般查询日志文件(general_log);

log_output={TABLE|FILE|NONE}

TABLE和FILE可以同时出现,用逗号分隔即可;

general_log:是否启用查询日志;

general_log_file:定义一般查询日志保存的文件

慢查询日志:超出这个时长的就成为慢查询!

mysql> show global variables like ‘long%‘;

long_query_time: 10.000000

slow_query_log={ON|OFF}

设定是否启用慢查询日志;它的输出位置也取决log_output={TABLE|FILE|NONE};

slow_query_log_file=www-slow.log

定义日志文件路径及名称;

log_slow_filter=admin,filesort,filesort_on_disk,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk

log_slow_queries=ON

log_slow_rate_limit=1

log_slow_verbosity

【慢查询演示】

设定慢查询

mysql> 
mysql> set global slow_query_log=1;
Query OK, 0 rows affected (0.05 sec)
设定为文件和表都输出
mysql> set global log_output=‘FILE,TABLE‘;
Query OK, 0 rows affected (0.00 sec)

【锁定一个表】

mysql> use hellodb;
Database changed
mysql> lock tables classes write;
Query OK, 0 rows affected (0.00 sec)

【打开一个终端2】

mysql> use hellodb;
Database changed
mysql> select * from students;
+-------+---------------+-----+--------+---------+-----------+
| StuID | Name          | Age | Gender | ClassID | TeacherID |
+-------+---------------+-----+--------+---------+-----------+
|     1 | Shi Zhongyu   |  22 | M      |       2 |         3 |
|     2 | Shi Potian    |  22 | M      |       1 |         7 |
正常显示
27 rows in set (0.00 sec)

mysql> select * fRom classes; 【fRom 避免与缓存击中】

被阻塞。。。。。。。。

【释放锁,查看日志】

mysql> unlock tables;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from mysql.general_log;
+---------------------+---------------------------+-----------+-----------+--------------+------------------------------------+
| event_time          | user_host                 | thread_id | server_id | command_type | argument                           |
+---------------------+---------------------------+-----------+-----------+--------------+------------------------------------+
| 2015-09-11 14:32:51 | root[root] @ localhost [] |         1 |         1 | Query        | show global variables like ‘%log%‘ |
| 2015-09-11 14:33:19 | root[root] @ localhost [] |         1 |         1 | Query        | select * from hellodb.classes      |
| 2015-09-11 14:33:20 | root[root] @ localhost [] |         1 |         1 | Query        | select * from hellodb.classes      |
| 2015-09-11 14:35:46 | root[root] @ localhost [] |         1 |         1 | Query        | select * from mysql.general_log    |
| 2015-09-11 14:38:53 | root[root] @ localhost [] |         1 |         1 | Query        | set global general_log=‘OFF‘       |
+---------------------+---------------------------+-----------+-----------+--------------+------------------------------------+
5 rows in set (0.00 sec)

错误日志:

服务器启动和关闭过程中的信息;

服务器运行过程中的错误信息;

事件调度器运行一个事件时产生的信息;

在复制架构中的从服务器上启动从服务器线程时产生的信息;

log_error = /path/to/error_log_file

log_warnings = {1|0}

是否记录警告信息于错误日志中;

时间: 2024-08-05 15:48:07

MySQL日志功能详解查询、慢查询的相关文章

MySQL日志功能详解(1)

MySQL日志:(以下都位全局服务器变量) MySQL > show global variables like '%log%'; MySQL 6类日志简单介绍 查询日志:默认为关闭(产生大量写操作) 所有跟查询相关的语句 慢查询日志:查询执行时长超过指定时长的查询,即为慢查询         (包括查询本身,以及查询所依赖的资源不被允许[表被锁定]) 错误日志:跟错误信息相关,以及mysql启动,关闭,主从复制等信息 二进制日志:记录跟修改相关的操作,用来实现复制的凭据(可是实现数据恢复) 中

MySQL日志功能详解(2)

二进制日志:(多个线程会争用,可以首先写到缓冲区中) 记录了当前服务器的数据修改和有潜在可能性影响数据修改的语句 默认在数据目录下,通常情况下为mysql-bin     [[email protected] data]# file mysql-bin.000001      mysql-bin.000001: MySQL replication log  复制日志 可以通过mysqlbinlog命令来查看 时间记录 time 偏移位置 position MySQL > show master 

Mysql 日志管理详解

日志对于服务器维护来说是非常重要的,它记录了服务器运行的信息,许多操作都会写入到日志文件,通过日志文件可以了解服务器的运行状态.服务器性能等:对维护人员进行排错,故障处理,优化等提供详细的依据.MySQL中有六种不同类型的日志 一.日志种类 1.错误日志:记录mysql启动,运行或停止时出现的问题信息,一般也会记录警告信息 2.一般查询日志:记录与建立的客户端连接和执行的语句 3.慢查询日志:记录所有执行时间超高long_query_time 的所有查询或不使用索引的查询,可以帮助我们定位服务器

Yii 框架里数据库操作详解-[增加、查询、更新、删除的方法 'AR模式']

public function getMinLimit () {        $sql = "...";        $result = yii::app()->db->createCommand($sql);        $query = $result->queryAll();         return array (                $query [0] ['max'],         );    } $connection=Yii::

MySQL数据库优化详解(收藏)

MySQL数据库优化详解 mysql表复制 复制表结构+复制表数据mysql> create table t3 like t1;mysql> insert into t3 select * from t1;mysql索引 ALTER TABLE用来创建普通索引.UNIQUE索引或PRIMARY KEY索引ALTER TABLE table_name ADD INDEX index_name (column_list)ALTER TABLE table_name ADD UNIQUE (colu

MySQL主从架构详解

1.复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的.复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环.这些日志可以记录发送到从服务器的更新.当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置.从服务器接收

(转)MySQL备份原理详解

MySQL备份原理详解 原文:http://www.cnblogs.com/cchust/p/5452557.html 备份是数据安全的最后一道防线,对于任何数据丢失的场景,备份虽然不一定能恢复百分之百的数据(取决于备份周期),但至少能将损失降到最低.衡量备份恢复有两个重要的指标:恢复点目标(RPO)和恢复时间目标(RTO),前者重点关注能恢复到什么程度,而后者则重点关注恢复需要多长时间.这篇文章主要讨论MySQL的备份方案,重点介绍几种备份方式的原理,包括文件系统快照(LVM),逻辑备份工具M

MySQL数据库备份详解

原文:MySQL数据库备份详解 对于任何数据库来说,备份都是非常重要的 数据库复制不能取代备份的作用 比如我们由于误操作,在主数据库上删除了一些数据,由于主从复制的时间很短,在发现时,从数据库上的数据可能也已经被删除了, 我们不能使用从数据库上的数据来恢复主数据库上的数据,只能通过备份进行误删除数据的恢复 一. 备份的分类 1.按备份的结果来分: 逻辑备份 其备份结果为SQL语句,适合于所有存储引擎,恢复时需要较多时间,逻辑备份时,对于MyISAM存储引擎是需要进行锁表操作的,通过使用的mysq

Mysql 三大特性详解

Mysql 三大特性详解 Mysql Innodb后台线程 工作方式 首先Mysql进程模型是单进程多线程的.所以我们通过ps查找mysqld进程是只有一个. 体系架构 InnoDB存储引擎的架构如下图所以,是由多个内存块组成的内存池,同时又多个后台线程进行工作,文件是存储磁盘上的数据. 后台线程 上面看到一共有四种后台线程,每种线程都在不停地做自己的工作,他们的分工如下: Master Thread: 是最核心的线程,主要负责将缓冲池中的数据异步刷新的磁盘,保证数据的一致性,包括脏页的刷新.合