Mysql

什麼是 LSN(日誌序列號)?xtrabackup 增量備份如何工作?

  • July 30, 2018

我很驚訝它xtrabackup支持增量備份。xtrabackup複製數據文件,了解數據文件的格式(可以進去看看)?什麼是假人的 LSN?我發現什麼是日誌序列號?它是如何在 MySQL 中使用的?.

來自增量備份的報價

增量備份複製其 LSN 比先前增量或完整備份的 LSN 更新的每個頁面。有兩種算法用於查找要複製的此類頁面集。第一個,適用於所有伺服器類型和版本,是通過讀取所有數​​據頁面直接檢查頁面 LSN。Percona Server 提供的第二個功能是在伺服器上啟用更改頁面跟踪功能,該功能將在頁面更改時記錄它們。然後,該資訊將被寫在一個緊湊的單獨的所謂點陣圖文件中。xtrabackup 二進製文件將使用該文件僅讀取增量備份所需的數據頁,從而可能節省許多讀取請求。如果 xtrabackup 二進製文件找到點陣圖文件,則預設啟用後一種算法。

我仍然不明白這是如何工作的。您使用xtrabackup增量備份嗎?你推薦xtrabackup增量備份嗎?

LSN 又名日誌序列號是一個 8 字節整數,用作 REDO 日誌條目 ( ib_logfile*) 的版本。對數據的每次更改都會在 REDO 日誌中創建一個條目並獲得一個新的 LSN。LSN 會隨著每次更改而遞增。

每個 InnoDB 索引頁面(儲存使用者數據的地方)的標題中都有 LSN 欄位。這是最後一次修改頁面的 LSN。

所以。如果我們知道進行完整備份時的最後一個 LSN(我們稱之為lsn_full)是什麼,那麼我們就知道從那時起某個特定頁面是否發生了變化。因為如果頁面的 LSN(我們稱之為lsn_current)高於lsn_full,則自上次備份以來頁面已更改。

Xtrabackup 使用這個想法來實現增量備份。事實上,您可以使用 Xtrabackup 實現增量備份和差異備份。檢查選項--incremental-lsn--incremental-basedir

是否使用增量備份取決於您對整個過程的信心。如果您不完全了解備份和恢復過程中發生的情況,很容易搞砸。(在 TwinDB,我必須處理很多增量備份因任何原因而無法使用的情況)。

我強烈建議驗證備份。確保備份副本可用的最可靠方法是從中恢復數據庫。所以我建議算法:

  • 獲取最新副本。
  • 在它上面恢復一個啟動 MySQL 實例。
  • 檢查某個表是否包含最近的數據。例如,如果您將事務儲存在數據庫中,請確保其中一些事務不超過一天或其他時間。

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