首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL Enterprise Backup (mysqlbackup) TTS 單表恢復實戰全記錄

     編輯:MySQL 綜合教學

MySQL Enterprise Backup (mysqlbackup) TTS 單表恢復實戰全記錄

場景:僅需恢復某張表(如誤 DROP TABLE),不想全庫恢復。利用 Transportable Tablespace (TTS) 功能,配合 --include-tables 實現單表級備份與恢復。

環境準備


CREATE DATABASE wind DEFAULT CHARSET gbk;
USE wind;
CREATE TABLE t1 (sid INT NOT NULL, sname VARCHAR(100) NOT NULL) ENGINE=InnoDB CHARSET=gbk;
CREATE TABLE t2 AS SELECT * FROM t1;
-- 存儲過程灌入 100 萬行測試數據

備份策略:全備 + 兩次增量

階段命令關鍵參數LSN 推進
全備--use-tts --include-tables='wind.t2' --backup-dir=/backup --log-bin-index=... backup-and-apply-logend_lsn=138866623
增量 1--incremental --start-lsn=138866623 --incremental-backup-dir=/backupincend_lsn=138868639
增量 2--incremental --start-lsn=138868639 --incremental-backup-dir=/backupincend_lsn=139571560

增量合並到全備


mysqlbackup --backup-dir=/backup/2015-04-02_12-41-45 --incremental-backup-dir=/backupinc/2015-04-02_12-44-02 apply-incremental-backup
mysqlbackup --backup-dir=/backup/2015-04-02_12-41-45 --incremental-backup-dir=/backupinc/2015-04-02_12-46-48 apply-incremental-backup

模擬誤刪與單表恢復


DROP TABLE wind.t2;

恢復命令(關鍵:以 mysql 系統用戶執行,避免權限報錯)


chown -R mysql:mysql /backup /usr/local/mysql
mysqlbackup --host=127.0.0.1 --port=3306 --user=root --password=123 \
  --datadir=/usr/local/mysql/data \
  --log-bin-index=/usr/local/mysql/mysql_logs/binary_log/mysql-bin.index \
  --backup-dir=/backup/2015-04-02_12-41-45 \
  --include-tables='wind\.t2$' \
  copy-back

關鍵坑點與解決

  1. 權限導致「Tablespace not found」:備份文件屬主必須為 mysql 用戶,chown -R mysql:mysql 目標 datadir 與備份目錄。
  2. --include-tables 支援正則:'wind\.t2$' 精確匹配單表。
  3. 恢復後需執行 IMPORT TABLESPACE(5.6+ 自動完成,舊版本手動):
    ALTER TABLE t2 DISCARD TABLESPACE; ALTER TABLE t2 IMPORT TABLESPACE;

驗證恢復結果


USE wind;
SHOW TABLES;              -- 僅 t2
SELECT COUNT(*) FROM t2;  -- 999990(含增量刪除 10 行)
SELECT COUNT(*) FROM t2 WHERE sname='ocpyang mysql test!'; -- 5000(增量更新)

適用場景與限制

  • 適用:誤刪表、誤截斷表、單表數據損壞、跨實例遷移單表。
  • 限制:需 innodb_file_per_table=ON、表使用獨立 .ibd 文件、MySQL Enterprise Backup 許可證。
  • 社區版替代:xtrabackup --tables=wind.t2 --copy-back 同樣支援 TTS 單表恢復。

一句話總結: mysqlbackup TTS + 正則 include-tables + 權限對齊 = 分鐘級單表恢復,避開全庫恢復的漫長等待。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved