单表/多表 原地恢复
该场景是数据的原地恢复,用户需要恢复其中几个表,其他表不动。 恢复过程中哦,不需停服。
我们以用户需要恢复test.binlog_test_3,test.binlog_test_4为例子
- 按照物理恢复的流程恢复数据(全量+增量), test目录下有4个文件,其中ibd, binlog_test_4.ibd 是我们需要的数据
- 创建表binlog_test_3, test2.binlog_test_4
表的schema 需要与物理恢复点时候一致,本例因为schema 没有修改,采用like创建表。注意这里是物理恢复时间点(全量物理备份 + 增加物理备份, 物理备份apply后,可以拉起一个mysqld实例,拿到schema的信息)
- 卸载新表表空间
卸载 test2.binlog_test_3, test2.binlog_test_4 表空间
- copy 物理恢复的表文件
把物理恢复的binlog_test_3.ibd, binlog_test_4.ibd copy到mysqld实例的data/test2 目录
- 挂载表空间
6. rename 表
test2.binlog_test_3 -->test.binlog_test_3_recovery
test2.binlog_test_4 --> test.binlog_test_4_recovery
用户检查过test.binlog_test_3_recovery, test.binlog_test_4_recovery后,rename 到test.binlog_test_3, test.binlog_test_4, 整个原地恢复场景完毕。