InnoDB 存储引擎的热备份
利用表空间迁移备份表(要求:innodb_file_per_table 参数设置为 ON ;迁移过程,表处于只读状态,不能进行 DDL 和写操作)
1、备份表步骤
#①备份表,执行 FLUSH TABLES ... FOR EXPORT 命令,此时数据库目录生成 cfg 文件,表处于只读状态
#注:本线程现在只能读 t2 表,无法读其它表;其它线程对 t3 表可读不可写,其它表无影响
flush tables t2 for export;
#②备份 ibd 文件和 cfg 文件(cfg 文件保存元数据,元数据用于验证导入表空间文件时的模式)
cp t2.cfg t2.ibd ~/backdir/backup_test_t2/
#③备份完成,解锁表
unlock tables;
2、恢复表步骤(假设表被误删)
#①重新创建表
CREATE TABLE `t2` (
`id` bigint(32) NOT NULL,
`insert_time` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
#②下线表
alter table t2 discard tablespace;
#③拷贝 ibd 和 cfg 文件到数据库目录
cp ~/backdir/backup_test_t2/* /home/mysql/mysqldata/test/
#④加载表
alter table t2 import tablespace;