Mysql

為什麼 MySQL bin 日誌文件在清除或刷新後仍然存在?

  • February 12, 2018

我使用了 PURGE BINARY LOGS 和 FLUSH LOGS,但是 mysql 目錄仍然包含這些文件:

mysql-bin.000025
mysql-bin.000024
mysql-bin.000023
mysql-bin.000022
mysql-bin.000021
mysql-bin.000020
mysql-bin.000019
mysql-bin.index

有沒有使用命令不起作用的原因?這些文件佔用了大量空間。我想安全地擺脫它們。

PURGE BINARY LOGS語句刪除指定日誌文件名或時間戳之前的日誌索引文件中列出的所有二進制日誌文件。刪除的日誌文件也會從記錄在索引文件中的列表中刪除,以便給定的日誌文件成為列表中的第一個。

mysql-bin.000019我希望您已經使用命令清除了二進制日誌

PURGE BINARY LOGS TO 'mysql-bin.000019';

如果您需要清除所有日誌,請喜歡

PURGE BINARY LOGS TO 'mysql-bin.000025';

這將刪除二進制日誌至mysql-bin.000025.

更新

你可以試試

RESET MASTER;

RESET MASTER刪除索引文件中列出的所有二進制日誌文件,將二進制日誌索引文件重置為空,並創建一個新的二進制日誌文件

與 PURGE BINARY LOGS的效果RESET MASTER在兩個關鍵方面有所不同:

  1. RESET MASTER刪除索引文件中列出的所有二進制日誌文件,只留下一個數字後綴為 .000001 的空二進制日誌文件,而編號不會被 PURGE BINARY LOGS 重置。
  2. RESET MASTER不打算在任何複製從屬伺服器執行時使用。當從屬執行時使用時的行為RESET MASTER是未定義的(因此不受支持),而PURGE BINARY LOGS在複製從屬執行時可以安全地使用。

CAVEAT 來自 RolandoMySQLDBA

如果您在RESET MASTER連接並執行的 Slave 的情況下執行,每個 Slave 的 IO 執行緒將立即失去其位置。複製因此被破壞,您將不得不花時間讓所有從站上的數據再次同步。如果您想在不破壞複製完整性的情況下安全地從 Master 中刪除二進制日誌,請執行以下操作:

  • SHOW SLAVE STATUS\G在每個從站上執行。
  • 注意Relay_Master_Log_File。這是在 Slave 中成功執行最新語句的二進制日誌)。
  • 從 的所有顯示中SHOW SLAVE STATUS\G,確定哪個Relay_Master_Log_File是最舊的(例如,‘mysql-bin.00123’)。
  • 你可以執行PURGE BINARY LOGS TO 'mysql-bin.00123';任何奴隸都不會失去它的位置。

整體效果?這將在 Master 上留下二進制日誌,其語句尚未在所有 Slave 上執行。

引用自:https://dba.stackexchange.com/questions/47046