发表于 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/
无特殊说明,文章均为月小升原创,欢迎转载,转载请注明本文地址,谢谢