Mysql
我可以禁用二進制日誌以暫時節省空間嗎
我正在使用 percona mysql 8。
我不使用任何類型的複制,但我讀到二進制日誌對於數據恢復很有用。我想在執行
pt-online-schema-change
不影響 OPTIMIZE 表時關閉 binlogging 並刷新它們。完成後,我想重新打開 binlogging(然後努力移動到有更多空間的伺服器)。
這是安全和推薦的嗎?我需要優化一個表並且不能離線,除非我刪除 50GB 的二進制日誌,否則製作表的副本會使我空間不足
當您使用set-vars啟動 pt-online-schema-change 時,您需要做的是設置
sql_log_bin
為 0pt-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 的評論中提到的,您應該確保有備份。通過設置複製並從從屬設備進行備份,您還可以為自己創造一個美好的世界。