单表恢复前提: 知道表结构
测试:
对数据库进行全备:
innobackupex --defaults-file=/etc/my4.cnf --user=root --password='' --socket=/tmp/mysql4.sock --databases="test" /tmp/full/
innodb存储引擎
进入数据库
查看t6表数据:
mysql> select * from t6;
+—-+
| id |
+—-+
| 0 |
| 1 |
| 2 |
| 4 |
| 5 |
| 7 |
| 10 |
| 0 |
| 11 |
+—-+
查看t6表结构:
show create table t6;
CREATE TABLEt6
(id
int(11) NOT NULL DEFAULT ‘0’ ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
删除表t6:
drop table t6;
/opt/mysql4/data/test下无t6.frm t6.ibd
在数据库中创建表t6:
CREATE TABLE
t6
(id
int(11) NOT NULL DEFAULT ‘0’ ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
丢弃表空间:
mysql> ALTER TABLE t6 DISCARD TABLESPACE;
mysql> select * from t6;
ERROR 1814 (HY000): Tablespace has been discarded for table ‘t6’
此时观察data/test/下只有t6.frm 无t6.ibd
把全备中的表t6复制到data/test/下,并修改属主属组:
cp /tmp/full/2017-05-19_10-34-01/test/t6.ibd /opt/mysql4/data/test
chown mysql:mysql t6.ibd
Copy the t6.ibd files from the backup to the database data directory
此时在数据库中查看t6表数据
mysql> select * from t6;
ERROR 1814 (HY000): Tablespace has been discarded for table ‘t6’
Import tablespace.
mysql> alter table t6 import tablespace;
mysql> select * from t6;
+—-+
| id |
+—-+
| 0 |
| 1 |
| 2 |
| 4 |
| 5 |
| 7 |
| 10 |
| 0 |
| 11 |
+—-+
观察可知 单表t6恢复成功。
myisam存储引擎
直接把表物理文件copy到对应的database,就可以访问。