Home > Database > Mysql Tutorial > MySQL记录执行过的SQL

MySQL记录执行过的SQL

WBOY
Release: 2016-06-07 16:58:02
Original
1029 people have browsed it

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

程序调试时,一种做法是从前面第一行查起,这种做法非常辛苦(如:程序源文件太多或编译过或加密过)。另一种做法就是从后面查起, 反正最后写入的是 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

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template