2011-09-11 97 views
21

我已經嘗試了幾個命令(FLUSH LOGS,PURGE MASTER),但沒有刪除日誌文件(以前激活時)或日誌表(mysql/slow_log.CSV和mysql/general_log.CSV及其.frm和.CSM對應文件) 。在MySQL中,如何刪除/清空/清除所有不必要的日誌?

SHOW BINARY LOGS返回「您沒有使用二進制日誌記錄」。

編輯:我發現這個簡單的解決方案,以清檯日誌(但尚未使用mysql命令文件日誌):

TRUNCATE mysql.general_log; 
TRUNCATE mysql.slow_log; 

回答

24

FLUSH LOGS只是關閉並重新打開日誌文件。如果日誌文件很大,則不會減少它們。如果您使用的是Linux,則可以使用mv重命名正在使用的日誌文件,然後在FLUSH LOGS之後,您知道MySQL正在寫入新的小文件,並且您可以刪除舊的大文件。

二進制日誌不同。要消除舊的binlog,請使用PURGE BINARY LOGS。確保你的奴隸(如果有的話)還沒有使用二進制日誌。也就是說,運行SHOW SLAVE STATUS查看它們正在處理的binlog文件,並且不清除該文件或更新的文件。

另外請記住,binlogs對於時間點恢復很有用,以防需要從備份中恢復,然後重新應用binlogs以使數據庫保持最新狀態。如果您需要以這種方式使用binlog,請不要清除自上次備份以來寫入的binlog。

+0

對於windows? – pollux1er

+4

@ pollux1er,我不會做Windows,對不起。 –

+0

我只需在'mv'和'rm'命令後重新啓動mysql,使用'sudo service mysql restart',然後確保mysql使用'sudo service mysql status'重新運行 – dazito

0

看來二進制日誌是不是在你的服務器中啓用。而我想你想刪除在啓用二進制日誌時使用/創建的舊日誌文件。如果需要,可以使用'rm'命令手動刪除它們。如果要啓用二進制日誌記錄,則可以通過更新configuaration文件來完成相同操作(但如果服務器已在運行,則需要重新啓動服務器)。你可以參考下面的鏈接。 http://dev.mysql.com/doc/refman/5.0/en/replication-options-binary-log.html#option_mysqld_log-bin http://dev.mysql.com/doc/refman/5.0/en/replication-options-binary-log.html#sysvar_log_bin

相關問題