mysql单表恢复--测试

单表恢复前提: 知道表结构

测试:
对数据库进行全备:

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 TABLE t6 ( 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,就可以访问。


你可能感兴趣的:(mysql)