mysql記錄所有執行過的SQL
前不久,遇見一些問題,要監控一下SQL的執行,看看是不是有哪些SQL是要去掉的之類的
於是我上網找啊找啊,給出來的結果都是一種,修改my.cnf檔案
我按著網上的說法去做,結果我直接崩潰了,
也不知道是不是我的環境是自己編譯安裝的還是其他什麼的,反正按照改了以後就是死活執行不起來
沒辦法,只好自己看看怎麼弄了
這時想起了剛剛接觸mysql時的一個SQL
show variables like "%name%";
set names utf8;
瞬間明瞭,找到了一個在沒有重啟mysql就不會失效的方法了
先show variables看看都有哪些變數是控制這個日誌記錄的
| general_log | OFF |
| general_log_file | /data/mysql/localhost.log |
看到沒?這從字面上就明顯的告訴你了
那剩下來的就簡單了
mysql> set general_log=on;
ERROR 1229 (HY000): Variable 'general_log' is a GLOBAL variable and should be set with SET GLOBAL
好吧,還是個全域性變數
mysql> set global general_log=on;
Query OK, 0 rows affected (0.00 sec)
再看看變數情況
| general_log | ON |
| general_log_file | /data/mysql/localhost.log |
隨便執行一些語句,然後再看看對應的目錄下的檔案,有沒有我們的操作記錄
170109 16:47:06 544 Query set general_log=on
170109 16:47:31 544 Query set global general_log=on
170109 16:47:56 544 Query show variables
完事,收工