InnoDB 採用獨立表空間(file_per_table=ON)時,每張表對應一個 .ibd 檔案。針對單表資料誤刪或誤 DROP,可透過物理備份與 Percona Data Recovery Tool 精準恢復,避免全庫恢復的漫長停機時間。
Percona Data Recovery Tool:官方專案頁
前提:備份後表未重建,space_id 與 index_id 與現有 ibdata1 完全一致。
innobackupex --defaults-file=... /backup/innobackupex --apply-log ... /backup/2012-10-17_11-29-20/cp testibd.ibd testibd.bakALTER TABLE testibd DISCARD TABLESPACEALTER TABLE testibd IMPORT TABLESPACEDROP 整張表,結構已不存在(較複雜)核心難點:表被刪除後,ibdata1 中的 space_id 釋放,需手動修復系統表中的元數據映射。
ibdconnect 修改 ibdata1 中 SYS_TABLES 與 SYS_INDEXES 的 SPACE ID 映射innochecksum 重新計算 ibdata1 頁面校驗和(重複執行直到無輸出)ibdata1 前務必完整備份innochecksum 需反覆執行直至所有頁面校驗通過