当前位置: 首页 > news >正文

mysql5.6之 传输表空间迁移表或恢复误删除的表

一,简单说明:

1),传输表空间的限制:
  1,mysql 版本 5.6.6 及其以上,并且版本建议源和目标版本建议都是GA版并且大版本一样
  2,表引擎为innodb并且开启独立表空间  innodb_file_per_table
  3,处于导出状态的表只允许读也即是”read_only“状态
  4,DISCARD TABLESPACE不支持分区表[5.6.17才支持] 并且当表上具有外键关系的时候需要将 foreign_key_check设置为0
  5,源和目标实例的page size 必须大小一致
  6,ALTER TABLE ... IMPORT TABLESPACE  不强制进行外键约束检查,所以需要将主表和子表都导出,然后在目标实例导入,
     另外该操作不需要.cfg 元数据文件,当然如果没有改文件在导入的时候是不做元数据检查的
  7,在windows上,innodb引擎内部都是以小写格式存储数据库,表名和表空间名,故为了避免导入因为大小写出现文件建议在大小写敏感, 如linux、unix的操作系统上都以小写的格式创建数据库和表同时在[mysqld]项下 添加
      [mysqld]
      lower_case_table_names=1 
      
2),传输表空间的优点:
  1,不需要消耗太多的资源
  2,很方便的将表 从一个实例迁移到另一个实例
  3,相对于mysqldump来说你无须导出然后导入同时还的维护索引


二,正常的表空间迁移
     1, 源数据库:
          use test;
          create table lidan(id int) engine=innodb;
          insert into lidan values(10);
     2,目标数据库:
          use test;
          create table lidan(id int) engine=innodb;
          insert into lidan values(10); 
     3,目标数据库卸载表空间:
         ALTER TABLE lidan DISCARD TABLESPACE;
         卸载表空间后lidan.ibd 文件和表空间分离并且会对表加一个排他锁,此时如果执行dml则会直接报错如图:
           
     4,源数据执行表空间导出:
         use test;
         FLUSH TABLES lidan FOR EXPORT;
        flush操作会触发表lidan的dirty page刷新到磁盘,并且stop purge 线程,同时将元数据信息写入lidan.cfg 如图:
          
        元数据文件存储的信息如下:
          
         主要就是一些数据库和表名、row_id 、回滚指针、事物id等 
        该会话会一直持有表lidan的metadata锁,故此时其他会话只能进行SELECT二更新和插入操作会被阻塞 。
        如图:
         
        
     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; 
        然后查看导入成功如图:
         
        导入的过程mysql内部会做如下事情:
        a,检查表空间每个page的一致性
        b,更新每个page的space id和lsn的信息
        c,启用头部页标记和更新LSN到头部页
        d,page 状态信息设置为dirty ,这样page将很快会被刷新到磁盘
       具体如图
                 
三,误删除情况下的恢复
    这里只讨论备库误删除的恢复,如果是主库误删表那只能通过备份来恢复了
     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

转:http://blog.csdn.net/lidan3959/article/details/25152623

转载于:https://www.cnblogs.com/andy6/p/6940883.html

相关文章:

  • MySQL 创建数据库及数据表
  • ThinkPHP 数据库操作之数据表模型和基础模型 ( Model )
  • 中国技术力量:ChinaTech Day 亮相 QCon 旧金山
  • 解决防火墙限制远程连接MySQL(导致错误10060可能之一)
  • storm-安装
  • [译]优秀的程序员不会觉得累成狗是一种荣耀
  • OS X 10.11.1测试版中现身 Magic Mouse 2 等新外设
  • 三取方格数
  • Hibernate拦截器(Interceptor)与事件监听器(Listener)
  • 把时间格式12:59:00 转换成小时数,并保留一位小数
  • 如何查看oracle当前session信息
  • 《放弃的艺术》晨读笔记
  • SpringMVC的入门例子
  • 交叉排序
  • 漫画 —— Linux 内核结构图
  • [case10]使用RSQL实现端到端的动态查询
  • 《Javascript数据结构和算法》笔记-「字典和散列表」
  • create-react-app做的留言板
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • If…else
  • JavaScript 一些 DOM 的知识点
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • mysql中InnoDB引擎中页的概念
  • ng6--错误信息小结(持续更新)
  • windows-nginx-https-本地配置
  • 程序员该如何有效的找工作?
  • 第2章 网络文档
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 开源SQL-on-Hadoop系统一览
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 码农张的Bug人生 - 初来乍到
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 通信类
  • 系统认识JavaScript正则表达式
  • 学习ES6 变量的解构赋值
  • 用jquery写贪吃蛇
  • 责任链模式的两种实现
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • #include到底该写在哪
  • #Ubuntu(修改root信息)
  • #WEB前端(HTML属性)
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • $.ajax()
  • (分享)自己整理的一些简单awk实用语句
  • (全注解开发)学习Spring-MVC的第三天
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (转)编辑寄语:因为爱心,所以美丽
  • (转)可以带来幸福的一本书
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .net 按比例显示图片的缩略图
  • .NET6实现破解Modbus poll点表配置文件