您的位置:首页 > 博客中心 > 数据库 >

mysql 5.6 使用传输表空间迁移表或恢复误删除的表

时间:2022-03-13 22:40

     4,源数据执行表空间导出:          use test;          FLUSH TABLES lidan FOR EXPORT;         flush操作会触发表lidan的dirty page刷新到磁盘,并且stop purge 线程,同时将元数据信息写入lidan.cfg 如图:           gxlsystem.com,布布扣         元数据文件存储的信息如下:           gxlsystem.com,布布扣          主要就是一些数据库和表名、row_id 、回滚指针、事物id等          该会话会一直持有表lidan的metadata锁,故此时其他会话只能进行SELECT二更新和插入操作会被阻塞 。         如图:          gxlsystem.com,布布扣               5,将导出的表(源数据库)所在数据文件目录下对应的lidan.ibd file和lidan.cfg 拷贝到目标数据库对应的文件夹下         cp -p  lidan.cfg lidan.ibd /data/percona-data-3307/test/                    注意:文件的拷贝必须在下一步释放metadata lock 之前      6,释放源数据库的metadata lock          use test;          unlock table;         unlock 这一步会删除之前生成的lidan.cfg文件,同时释放metadata lock 并且重新启动purge 线程      7,目标数据库将表导入到表空间         alter table lidan import tablespace;          然后查看导入成功如图:          gxlsystem.com,布布扣         导入的过程mysql内部会做如下事情:         a,检查表空间每个page的一致性         b,更新每个page的space id和lsn的信息         c,启用头部页标记和更新LSN到头部页         d,page 状态信息设置为dirty ,这样page将很快会被刷新到磁盘        具体如图              gxlsystem.com,布布扣     三,误删除情况下的恢复     这里只讨论备库误删除的恢复,如果是主库误删表那只能通过备份来恢复了      1,首先备库上执行drop操作,模拟误删除        (user:root  time: 16:37 port: 3307)[db: test]drop table lidan;      2,备库恢复必须要有.frm文件,故这里需要从源库查看表结构然后在目标库创建         create table lidan(id int) engine=innodb;        接下来的步骤就按照(二)当中从3开始做即可,具体请自行测试。           参考: http://dev.mysql.com/doc/refman/5.6/en/flush.html                                                         http://dev.mysql.com/doc/refman/5.6/en/tablespace-copying.html

mysql 5.6 使用传输表空间迁移表或恢复误删除的表,布布扣,bubuko.com

热门排行

今日推荐

热门手游