设为首页 收藏本站
查看: 1158|回复: 0

[经验分享] MySQL日志功能详解查询、慢查询

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-9-14 09:32:30 | 显示全部楼层 |阅读模式
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

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-113358-1-1.html 上篇帖子: MariaDB 10(MySQL5.6企业版分支)的主要新特性 下篇帖子: MySQL用户、[表库字段]权限、管理及查询缓存详解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表