Mysql
為什麼 MySQL bin 日誌文件在清除或刷新後仍然存在?
我使用了 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
在兩個關鍵方面有所不同:
RESET MASTER
刪除索引文件中列出的所有二進制日誌文件,只留下一個數字後綴為 .000001 的空二進制日誌文件,而編號不會被 PURGE BINARY LOGS 重置。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 上執行。