Percona

是否有必要在 innobackupexec 執行後立即執行 apply-log?

  • August 25, 2014

我一直在嘗試閱讀其他問題,但沒有找到適合我的答案。所以,如果我問一些已經問過的問題,請原諒。

我正在嘗試組織自己並使用 innobackupexec 備份我的所有 mysql 伺服器(因為我只使用 Percona Mysql)。我已閱讀 percona 文件和其他一些部落格/文章,但我不明白是否需要在執行完整備份後立即執行 –apply-log。如果我需要安排一個腳本作為每日備份,我應該只編寫這個腳本嗎?

innobackupex /data/backups

我應該只使用

innobackupex --use-memory=4G --apply-log /data/backups/2010-03-13_02-42-44/

只有當我需要恢復數據庫時?

我很困惑,希望能得到一些澄清。

謝謝

Percona Xtrabackup 上的快速 101:

基本上,該工具所做的是以不一致的方式複制實時數據,但要確保它獲得複制時發生的所有必要更改,以便將其恢復到正確的狀態。換句話說,它使用自定義 InnoDB 實例執行“不干淨的完整副本”,然後執行“受控崩潰恢復”。這正是您需要兩個階段的原因(首先是副本,然後是日誌的應用程序,其中重新應用已送出的更改並丟棄未送出的更改)。

第二部分可以在不同的機器上完成,沒有數據庫連接——這就是為什麼它是一個單獨的命令。

因此,您有兩個選擇:--apply-log在複製結束後立即執行或在恢復之前執行。

  • 第一種情況的優點:您的副本已 100% 準備好在緊急情況下恢復(僅--copy-back此而已)。您可以刪除已保存的事務日誌,因為不再需要它。
  • 它的缺點:一旦刪除了未送出的更改,就無法使用以下增量前滾完整備份。此外,您不會生成部分導入可能需要的額外資訊。

如果您只打算在未來創建完整備份並執行完整還原,則可以在復製完成後安全地執行此操作。如果您的apply-log階段很快(或者您不關心事務日誌的額外時間和空間)並且您希望擁有額外的靈活性(對於部分/增量備份),只需等到恢復開始即可

除非您的生產數據庫是關鍵任務並且恢復時間至關重要,否則我通常建議您等到需要備份後再執行應用日誌。

備份後立即執行 apply-log 的優點:

  • 您的備份可以立即使用(使用 –move-back / –copy-back),在緊急情況下為您節省寶貴的時間

在需要備份之前不執行 apply-log 的優點:

  • 您將能夠進行表級恢復(使用適當的伺服器版本)
  • 在沒有大量寫入的伺服器上,每個備份可能會更小,因為尚未創建 InnoDB 日誌文件
  • 您可以將流備份壓縮到磁碟或通過網路
  • 每次不執行它時,都會節省 CPU 週期和記憶體

無論您選擇哪種方式,都可能值得在備份文件夾中的某處給自己留個便條,說明為進行備份所做的工作以及還需要採取哪些步驟來恢復它。

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