閱讀19 返回首頁    go 阿裏雲 go 技術社區[雲棲]


如何在MySql中記錄SQL日誌

SQL server有一個sql profiler可以實時跟蹤服務器執行的SQL語句,這在很多時候調試錯誤非常有用。例如:別人寫的複雜代碼、生產係統、無調試環境、無原代碼... ...
 
查了一下資料,My SQL可以用下麵方法跟蹤sql 語句,以下方法以Windows平台為例,linux雷同:
 
1  配置my.ini文件(在安裝目錄,linux下文件名為my.cnf)
 
  查找到[mysqld]區段,增加日誌的配置,如下示例:
[mysqld]
log="C:/temp/mysql.log"
log_slow_queries="C:/temp/mysql_slow.log"
long_query_time=1


 
log指示日誌文件存放目錄;
log_slow_queries指示記錄執行時間長的sql日誌目錄;
long_query_time指示多長時間算是執行時間長,單位s。
 
Linux下這些配置項應該已經存在,隻是被注釋掉了,可以去掉注釋。但直接添加配置項也OK啦。
 
2  重新啟動mysql服務。
 
注意事項:
    A 日誌存放目錄必須提前存在,否則不能記錄日誌。這裏也局勢C:/temp目錄必須已經存在
    B 日誌文件是linux格式的文本,建議用ultraEdit打開,轉換為dos格式查看(否則沒有換行,看不懂的)
    C 服務在啟動狀態下不能刪除日誌文件,否則就無法記錄sql語句了。
    D 不能用ultraEdit直接清除文件內容後保存,否則也記錄不下來了。需要重啟服務,如果ultraEdit保存了.bak,後記錄到此文件中。
    E 可以用notepad清除文本後保存,可以繼續記錄日誌。(怪怪的,也不建議用)

最後更新:2017-04-03 12:56:39

  上一篇:go 在與 SQL Server 建立連接時出現與網絡相關的或特定於實例的錯誤
  下一篇:go System.Runtime.InteropServices.COMException (0x8004E00F): COM+ 無法與 Microsoft 分布式事務協調程序交談 (異常來自 HRESU