参考文档:https://www.percona.com/doc/percona-xtrabackup/2.4/xtrabackup_bin/restoring_individual_tables.html
需要满足的条件:
innodb存储引擎
表有对应的.ibd文件
满足以上条件就可以通过物理备份集生成以表为单位的export文件
测试
物理全备
/usr/local/bin/xtrabackup --defaults-file=/etc/3309.cnf --user=root --socket=/tmp/3309.sock --parallel=4 --backup --target-dir=/data0/sql/20171016.bak
export表:还原,加选项--export
xtrabackup --prepare --export --target-dir=/data0/sql/20171016.bak/ # 如果备份时时加密的,那么还原时还需指定密钥文件,选项--keyring-file-data
查看某个表对应的备份文件
find /tmp/20171016.bak/ -name 't1*' /data0/sql/20171016.bak/test/t1.frm /data0/sql/20171016.bak/test/t1.cfg /data0/sql/20171016.bak/test/t1.exp /data0/sql/20171016.bak/test/t1.ibd
import 表
# 删除ibd文件 ALTER TABLE test.t1 DISCARD TABLESPACE; # .cfg文件可以不拷贝并重新授权 cp /data0/sql/20171016.bak/test/t1.* /data0/mysql/3309_test/test/ ll /data0/mysql/3309_test/test/t1.* -rw-r----- 1 mysql mysql 16384 Oct 16 23:11 /data0/mysql/3309_test/test/t1.exp -rw-r----- 1 mysql mysql 8676 Oct 16 23:11 /data0/mysql/3309_test/test/t1.frm -rw-r----- 1 mysql mysql 163840 Oct 16 23:12 /data0/mysql/3309_test/test/t1.ibd # 导入 ALTER TABLE test.t1 IMPORT TABLESPACE; Query OK, 0 rows affected, 1 warning (0.11 sec)
操作期间遇到的报错
ALTER TABLE test.t1 IMPORT TABLESPACE; ERROR 1812 (HY000): Tablespace is missing for table `test`.`t1`. # 是未拷贝ibd文件导致 ALTER TABLE test.t1 IMPORT TABLESPACE; ERROR 1815 (HY000): Internal error: Cannot reset LSNs in table `test`.`t1` : Tablespace not found # 是文件未授权导致