mysql 慢日志DBS_开发人员必须会的mysql日志查看

发表于 2014-02-19 04:37:47 by 月小升

作为一名开发人员,基本都会和

会用

第一弹:

1.首先确认你

4.看二进制日志文件用mysqlbinlog

shell>mysqlbinlog mail-bin.000001

或者shell>mysqlbinlog mail-bin.000001 | tail

show variables like 'log_bin';

+—————+——-+

| Variable_name | Value |

+—————+——-+

| log_bin | ON |

+—————+——-+

1 row in set (0.00 sec)

mysql有以下几种日志:

错误日志: -log-err

查询日志: -log

慢查询日志: -log-slow-queries

更新日志: -log-update

二进制日志: -log-bin

在mysql的安装目录下,打开my.ini,在后面加上上面的参数,保存后重启mysql服务就行了。

例如:#Enter a name for the binary log. Otherwise a default name will be used.

#log-bin=#Enter a name for the query log file. Otherwise a default name will be used.

#log=#Enter a name for the error log file. Otherwise a default name will be used.

log-error=#Enter a name for the update log file. Otherwise a default name will be used.

#log-update=

上面只开启了错误日志,要开其他的日志就把前面的“#”去掉

查看命令:①show variables like ‘log_%’;查看所有的log命令

②show variables like ‘log_bin’;查看具体的log命令

mysql> show variables like 'log_%';

+———————————+—————-+

| Variable_name | Value |

+———————————+—————-+

| log_bin | ON |

| log_bin_trust_function_creators | OFF |

| log_bin_trust_routine_creators | OFF |

| log_error | /log/error.log |

| log_output | FILE |

| log_queries_not_using_indexes | OFF |

| log_slave_updates | OFF |

| log_slow_queries | ON |

| log_warnings | 1 |

+———————————+—————-+

9 rows in set (0.00 sec)

mysql> show variables like ‘log_error’;

+—————+—————-+

| Variable_name | Value |

+—————+—————-+

| log_error | /log/error.log |

+—————+—————-+

1 row in set (0.01 sec)

第二弹:更方便的日志记录

将日志写在log文件里

my.cnf

在[mysqld] 中輸入 #log

log-bin=mysql-bin

log-error=/log/error.log

#log=/log/mysql.log

slow_query_log=true

slow_query_log_file = "/var/lib/mysql/rh64-slow.log"

long_query_time=1

log-queries-not-using-indexes=true

140219 12:14:57 [ERROR] Could not use /log/mysql.log for logging (error 13). Turning logging off for the whole duration of the MySQL server process. To turn it on again: fix the cause, shutdown the MySQL server and restart it.

经过一番搜索,最后的结论是权限问题

用系统root用户,把log这个目录修改成777

chmod -R 777 /log/

重启动,就好了。(根本不需要在log目录下单独创建mysql.log这样的文件,系统会自动生成的)

查看下mysql.log

3 Query select @@version_comment limit 1

140219 12:30:06 3 Query show variables like ‘log_%’

140219 12:30:35 3 Query show variables like ‘log_bin’

140219 12:30:40 3 Query show variables like ‘log_error’

140219 12:32:50 4 Connect root@localhost on

4 Query SET CHARACTER SET ‘utf8’

4 Query SET collation_connection = ‘utf8_general_ci’

4 Query SHOW PLUGINS

4 Init DB ad

4 Query SELECT * FROM `area`

LIMIT 0, 30

所有的mysql底层执行,都会被执行。

这样太有利于我们优化自己的sql语句了。

没有找到如何让日志按天切割。

简单的处理办法是写个脚本,每天夜里12点执行

mv mysql.log a.log //移动日志

/opt/lampp/bin/mysqladmin -u admin -p flush-logs 刷新日志

不过基本上都是调试的时候,监测服务器可能有占mysql资源的语句的时候,才用。不需要天天记录,那样mysql速度会变慢。所以这个需求基本不需要了。

手工flush-logs 即可。这样比来回重启mysql要省事一点儿。

This entry was posted in PHP, 数据库 and tagged debug, mysql, 数据库, 日志, 日志分析. Bookmark the permalink.

月小升QQ 2651044202, 技术交流QQ群 178491360

首发地址:月小升博客 – https://java-er.com/blog/mysql-log-set/

无特殊说明,文章均为月小升原创,欢迎转载,转载请注明本文地址,谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值