Mysql

如何優化大表進行備份

  • January 10, 2022

我有一張不太大的桌子,但仍然需要 30GB 的儲存空間。

當我嘗試使用 mysqldump 進行備份時,需要花費大量時間和資源,我想優化它,但我不知道如何。

我的數據是基於日期的。我從不刪除或更改舊數據,除非有時我對一個不太重要的欄位進行更改,而不是日常備份(可能是每周備份一次)

如何更改我的備份過程以僅備份新數據(例如僅備份今天的數據)?

我的解決方案之一是每 3 個月創建一個單獨的表,並僅對主表進行每日備份。但這使我的應用程序非常複雜。

我應該為存檔創建單獨的表嗎?或者有沒有更好的解決方案?

您可能希望比完整備份更頻繁地使用差異或增量備份。

差異備份僅備份自上次完整備份執行以來對數據庫的更改:

執行一系列差異備份。 每個差異備份都包含自上次執行完整備份以來對數據所做的所有更改。例如,要恢復到時間 t 的數據,您只需先恢復完整備份,然後在其之上恢復時間 t 的差異備份。

增量備份僅備份自上次完整或上次增量備份類型執行以來的更改:

執行一系列增量備份。 每個增量備份僅包括自上次備份以來的更改,該備份本身可以是完整備份或增量備份。增量系列中的第一個備份始終是差異備份;但在那之後,每個增量備份只包含自上次增量備份以來所做的更改。因此,每個後續增量備份的大小通常都比差異備份小,而且製作速度更快;這使您可以進行非常頻繁的增量備份,然後使您能夠在必要時將數據庫恢復到更精確的時間點。

因此,兩者通常比完整備份執行得更快,因為它們不會備份未更改的數據。

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