2009-02-23 83 views
14

在MySQL運行時,截斷MySQL慢速查詢日誌(主要在Linux下,但Windows可能很容易知道)的最安全方法是什麼?在MySQL中截斷緩慢查詢日誌

通過安全我的意思是:

  • 不得造成任何權限問題
  • 不得跳回到下一次原始大小的附加

回答

20

要截斷一個文件,而不管如果它是由正在運行的應用程序打開的,請執行以下操作:

> /var/logs/your.log 

在您的shell提示符處。

+0

我還沒有徹底調查過,但是這種方法有沒有在日誌條目中間截斷的機會,從而在日誌文件中引入了錯誤?我喜歡這個解決方案(特別是增加了我的一般Linux知識),但從我所看到的,@ tjanofsky的解決方案更強大。 – rinogo 2014-02-13 16:12:52

+0

@rinogo:好問題。我必須檢查單個`write()`系統調用是否可以與另一個交錯。 OTOH,我不希望記錄器使用多個write()來寫一行記錄。 – vartec 2014-02-13 17:19:08

5

如果這將是一個持續的問題,你應該看看logrotate,因爲它可以爲你做這個。我不知道echo > file.log,雖然它是有道理的。我一直使用cat /dev/null > file.log

另外,應該指出的是,它的重要的是不要刪除正在寫入的日誌文件,因爲打開它的程序將繼續寫入文件。很難弄清楚爲什麼你的硬盤空間不見了!

16

here

您可以移動打開的文件,然後告訴mysqld的刷新記錄,這將打開一個新的日誌。

shell> cd mysql-data-directory 
shell> mv mysql.log mysql.old 
shell> mv mysql-slow.log mysql-slow.old 
shell> mysqladmin flush-logs