在MySQL運行時,截斷MySQL慢速查詢日誌(主要在Linux下,但Windows可能很容易知道)的最安全方法是什麼?在MySQL中截斷緩慢查詢日誌
通過安全我的意思是:
- 不得造成任何權限問題
- 不得跳回到下一次原始大小的附加
在MySQL運行時,截斷MySQL慢速查詢日誌(主要在Linux下,但Windows可能很容易知道)的最安全方法是什麼?在MySQL中截斷緩慢查詢日誌
通過安全我的意思是:
要截斷一個文件,而不管如果它是由正在運行的應用程序打開的,請執行以下操作:
> /var/logs/your.log
在您的shell提示符處。
如果這將是一個持續的問題,你應該看看logrotate,因爲它可以爲你做這個。我不知道echo > file.log
,雖然它是有道理的。我一直使用cat /dev/null > file.log
。
另外,應該指出的是,它的很重要的是不要刪除正在寫入的日誌文件,因爲打開它的程序將繼續寫入文件。很難弄清楚爲什麼你的硬盤空間不見了!
從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
我還沒有徹底調查過,但是這種方法有沒有在日誌條目中間截斷的機會,從而在日誌文件中引入了錯誤?我喜歡這個解決方案(特別是增加了我的一般Linux知識),但從我所看到的,@ tjanofsky的解決方案更強大。 – rinogo 2014-02-13 16:12:52
@rinogo:好問題。我必須檢查單個`write()`系統調用是否可以與另一個交錯。 OTOH,我不希望記錄器使用多個write()來寫一行記錄。 – vartec 2014-02-13 17:19:08