Mysql
我可以使用 Percona Xtrabackup 備份來恢復單個表嗎?
我已經使用 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 開始恢復單個表,這在本文件中有詳細說明。
只需幾步
- 準備備份:
xtrabackup --prepare --export --target-dir=/data/backup
- 丟棄表的表空間:
ALTER TABLE db.table_to_restore DISCARD TABLESPACE;
- 複製目錄中的表文件
cp -a /data/backup/db/table_to_restore.* /var/lib/mysql/db/
- 修復文件權限:
chown mysql:mysql /var/lib/mysql/db/table_to_restore.*
- 載入表空間:
ALTER TABLE db.table_to_restore IMPORT TABLESPACE;