MySQL日志功能详解查询、慢查询
MySQL日志:大量的IO操作不建议写到文件中
1
2
3
4
mysql> show global variables like 'innodb%';
mysql> show global variables like '%log%';
general_log | OFF
log | OFF
【临时开启记录日志】
1
2
3
4
5
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 日志文件】
1
2
3
4
5
6
7
8
mysql> select * from classes;
[iyunv@pc0003 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';此时设定相对下面的无用!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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 日志文件,只会记录到设定关闭的时刻。】
1
2
3
4
5
6
7
8
[iyunv@pc0003 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
【设定日志输出到表中】
1
2
3
4
5
6
7
8
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)
【执行】
1
2
mysql> show global variables like '%log%';
mysql> select * from hellodb.classes;
【文件查看】没有刚才的操作记录
1
[iyunv@pc0003 data]# cat /mydata/data/pc0003.log
【表查看】 记录到指定的位置了
1
2
3
4
5
6
7
8
9
10
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)
【不建议启用查询 日志,除非有特殊需求】
1
2
3
4
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
【慢查询演示】
设定慢查询
1
2
3
4
5
6
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)
【锁定一个表】
1
2
3
4
mysql> use hellodb;
Database changed
mysql> lock tables classes write;
Query OK, 0 rows affected (0.00 sec)
【打开一个终端2】
1
2
3
4
5
6
7
8
9
10
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 避免与缓存击中】
被阻塞。。。。。。。。
【释放锁,查看日志】
1
2
3
4
5
6
7
8
9
10
11
12
13
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}
是否记录警告信息于错误日志中;
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com