tid=21839& 程式 Debug 有時後從前面第一行追起來很辛苦(程式碼太多或 compile 過), 另一種做法就是從後面往前追, 反正最後寫入的是 DB, 那就從 DB 開始往前推, 所以就是要抓程式是執行哪些 SQL 語法.(以下只以 MySQL 為主) 之前用過的追蹤法是用 tcpdump 或 wireshark 聽 3306 port,這個太辛苦 MySQL 有幾種方法可以用, 將以挑喜歡的其中一種, 加入 /etc/my.cnf(CentOS), 再 restart mysql 即可: 第一種: 查 Slow query 的 SQL 語法: - log_slow_queries = /var/log/mysql/mysql-slow.log
- long_query_time = 2 (超過 2秒的 SQL 語法記錄起來, 設短一點來記錄除錯也是一種方法 XD)
, d x1 E4 d* `1 }6 {) T. ^! j
第二種: 設 MySQL Replication 用 binlog: - log_bin = /var/log/mysql/mysql-bin.log (此檔要用 mysqlbinlog 解來看)
- mysql 會將所有 INSERT/UPDATE/DELETE 語法記於此(但是語法可能跟你想的不同), 這是要寫給 SLAVE 用的 log 檔
8 @" I* l8 B* u8 ^/ G- r+ ^
第三種: 推薦此方法, 將 MySQL 執行的每行指令全都記錄起來: - log = /var/log/mysql/mysql.log3 G& S. G. U' X" |9 g
restart mysql 後, tail -f /var/log/mysql/mysql.log 就可以看到囉! 9 F: q+ T) F k9 n5 P3 V
|