首页 > 数据库 > mysql教程 > MySQL记录执行过的SQL

MySQL记录执行过的SQL

WBOY
发布: 2016-06-07 16:58:02
原创
1028 人浏览过

程序调试时,一种做法是从前面第一行查起,这种做法非常辛苦(如:程序源文件太多或编译过或加密过)。另一种做法就是从后面查起, 反正

程序调试时,一种做法是从前面第一行查起,这种做法非常辛苦(如:程序源文件太多或编译过或加密过)。另一种做法就是从后面查起, 反正最后写入的是 DB, 那就从 DB 开始往前推, 所以就是要抓住程序是执行哪些 SQL 语法.

之前用过的追踪法是用 tcpdump 或 wireshark 听 3306 port,这个太苦, 就不再多说~

MySQL 有几种方法可以用, 将以挑喜欢的其中一种, 加入 /etc/mysql/my.cnf(debian), 再 restart mysql 即可:

第一种: 查 Slow query 的 SQL 语法:

log_slow_queries = /var/log/mysql/mysql-slow.log

long_query_time = 2 (超过2秒的 SQL 语法记录起来, 设短一点来记录除错也是一种方法.)

第二种: 设 MySQL Replication 用 binlog:

log_bin = /var/log/mysql/mysql-bin.log (此档要用 mysqlbinlog 解来看)

mysql 会将所有 INSERT/UPDATE/DELETE 语法记于此(但是语法可能跟你想的不同), 这是要写给 SLAVE 用的 log 文件

第三种: 推荐此方法, 将 MySQL 执行的每行指令全都记录起来:

log = /tmp/mysql.log

restart mysql 后, tail -f /tmp/mysql.log 就可以看到啰! :)

补充: 最早前的方法是 mysqldump, 然后执行完后再 mysqldump, 再 diff, 但是在 DB > 1G 后就放弃此方法了.

linux

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板