Mysql

是否有使用 Percona XtraBackup 備份 MyISAM 表的非阻塞操作?

  • April 19, 2018

我一直在閱讀Percona XtraBackup 的網站,它聲稱:

Percona XtraBackup 可以通過在備份結束時短暫暫停寫入來備份以下儲存引擎:MyISAM、Merge、Archive …

二進製文件中是否有我錯過的標誌或選項xtrabackup來實現此功能?

更多資訊…

我將 XtraBackup 2.3.4 和 MySQL 5.6.30 安裝到 CentOS 7.2 伺服器上。我創建了一個包含大約 3200 萬行的新 MyISAM 表,並使用以下內容開始備份過程:

xtrabackup --user=user --password=password --no-timestamp --compress --backup --target-dir /tmp/my_backup

在備份過程中,我嘗試向表中寫入一個新行,完全期待它被插入到表中,因為這就是網站所暗示的情況。然而,事實並非如此。在整個備份過程中,MyISAM 表被鎖定。

我理解為什麼表被鎖定,因此我非常興奮地讀到 XtraBackup 可以執行備份,直到最後沒有任何明顯的寫入暫停。我只是不明白如何實現這個功能。

——MyISAM 架構禁止熱備份——它使用鎖定機制。您可能會對我在相關主題中的回复感興趣。

獲取數據庫的 mysqldump,將 ENGINE=MyISAM 的位置更改為 ENGINE=InnoDB(InnoDB 使用 MVCC 架構),然後恢復 - XtraBackup 然後將執行熱備份。使用 sed 進行我建議的編輯相對容易

mysqldump [options] | sed 's/ENGINE=MyISAM/ENGINE=InnoDB/g' > my_schema.sql 

然後以正常方式恢復您的轉儲文件。

無論如何, MyISAM 將在不久的將來被棄用!

$$ EDIT - added 19/04/2018 $$- MySQL 8 中的系統表現在是InnoDB! 在回答 OP 關於 Percona 的 XtraBackup 頁面是“完全製造”的問題時,引用是“可以通過在備份結束時短暫暫停寫入來備份以下儲存引擎”。

我認為該頁面上的關鍵字是“簡要”!:-) 看看這裡——Bill Karwin 是這個論壇的熱門人物。

另外,看看 Shlomi NoachMyISAM 熱備份(或缺少!)的評價——他也是 MySQL 世界的大熱門。他提到的文件系統快照是mylvmbackup - 它似乎有一個相當不錯的代表。這裡。

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