Mysql

我可以使用 Percona Xtrabackup 備份來恢復單個表嗎?

  • March 4, 2021

我已經使用 Xtrabackup 工具一個月了,我不得不承認:它真的很強大!

我仍在測試它以備份 5 到 150 GB 的數據庫伺服器,備份/恢復時間令人印象深刻。所以我試圖將這個工具的使用推給我的經理,說我們唯一不方便的是備份存檔大小(比使用 mysqldump 大 3 倍/4 倍),另一方面,我們獲得了更快的時間備份/恢復,在備份過程中沒有鎖定以及將備份流式傳輸到伺服器的能力。

該工具的功能給他留下了深刻的印象,但在備份/恢復過程中對他來說最重要的部分是能夠快速恢復數據庫的特定表。至於我對這個工具的了解,我仍然認為現在使用 Xtrabackup 是不可能的。我對嗎?

我們正在使用以下軟體:

Ubuntu 12.04 MySQL 伺服器 5.5.32 Xtrabackup 2.1.3-608.precise

PS:我見過一些解決方案可以從使用 Xtrabackup 創建的備份中恢復特定表,但它總是需要 Percona Server。

如果無法使用 Xtrabackup,是否有人對此問題有另一種解決方案?

此功能目前僅在 Percona Server 上受支持。

有關更多資訊,請參閱官方文件連結: http ://www.percona.com/doc/percona-xtrabackup/2.1/innobackupex/importing_exporting_tables_ibk.html

截至目前(2021 年 3 月),可以從 percona 2.3 開始恢復單個表,這在本文件中有詳細說明。

只需幾步

  1. 準備備份:xtrabackup --prepare --export --target-dir=/data/backup
  2. 丟棄表的表空間:ALTER TABLE db.table_to_restore DISCARD TABLESPACE;
  3. 複製目錄中的表文件cp -a /data/backup/db/table_to_restore.* /var/lib/mysql/db/
  4. 修復文件權限:chown mysql:mysql /var/lib/mysql/db/table_to_restore.*
  5. 載入表空間:ALTER TABLE db.table_to_restore IMPORT TABLESPACE;

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