Mysql

我可以禁用二進制日誌以暫時節省空間嗎

  • December 19, 2020

我正在使用 percona mysql 8。

我不使用任何類型的複制,但我讀到二進制日誌對於數據恢復很有用。我想在執行pt-online-schema-change不影響 OPTIMIZE 表時關閉 binlogging 並刷新它們。

完成後,我想重新打開 binlogging(然後努力移動到有更多空間的伺服器)。

這是安全和推薦的嗎?我需要優化一個表並且不能離線,除非我刪除 50​​GB 的二進制日誌,否則製作表的副本會使我空間不足

當您使用set-vars啟動 pt-online-schema-change 時,您需要做的是設置sql_log_bin為 0

pt-online-schema-change --set-vars sql_log_bin=0

您的二進制日誌永遠不會知道其中的區別。

請確保您有足夠的空間用於臨時表 ( _tablename_new)。

更新 2020-12-10 14:45 EST

如果您不在此伺服器上進行備份,那麼您可以執行

PURGE BINARY LOGS BEFORE CURDATE() - INTERVAL 5 DAY;

保留最後 5 天的二進制日誌,或者如果您希望所有二進制日誌都消失,然後執行

RESET MASTER;

警告 !!!

在此之前,請確定伺服器是否作為主伺服器執行複制。

更新 2020-12-10 16:05 EST

由於您正在執行 pt-online-schema-change,因此您應該像這樣執行它

pt-online-schema-change --set-vars sql_log_bin=0 --alter "ENGINE=InnoDB"

這只會創建一個碎片整理的臨時表。碰巧–analyze-before-swap是預設值。這意味著ANALYZE TABLE在交換舊表和新表之前,臨時表已對其執行。OPTIMIZE TABLE這與InnoDB 表具有完全相同的效果。

正如nbk 的評論中提到的,您應該確保有備份。通過設置複製並從從屬設備進行備份,您還可以為自己創造一個美好的世界。

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