zoukankan      html  css  js  c++  java
  • mysql innodb引擎独立表空间记录,表组成及表迁移

    以下涉及到的文件在mysql数据库指定的数据目录下。

    1. 独立表空间

      5.6之前所有表信息都在共享表空间存放,即ibdata文件中(存放所有数据库信息),也是mysql默认的设置。

      5.6及之后默认使用独立表空间存储数据行及索引信息,即ibd文件。特点为一个表对应一个ibd文件。ibdata文件中也只存放元数据+undo;

    2. innodb引擎表组成:

      .frm(存放表结构信息) + .ibd(存储数据行及索引) + .ibdata1(存放元数据+undo)

    3. 查看独立表空间是否生效

      select @@innodb_file_per_table;  结果为1表示独立表空间生效

    4. 更改独立表空间为共享表空间

      set global innodb_file_per_table=0;  了解即可, 不建议修改

      更改后再创建的表不再生成ibd文件,数据行和索引信息都将被存储到ibdata1文件中。

    5. 独立表空间迁移命令

      需求:复制表的frm文件和ibd文件到新库中,想正常使用该表。

        1. 因缺少元数据,即ibdata1文件中记录的信息,而这个文件我们无法直接修改,只能有mysql提供的语句来操作,顾此方法行不通。

        2. 在新库中创建和目标表一样结构的表,使得ibdata1数据字典中有该表信息;

            使用alter table xx dicard tablespace; 来使mysql删掉xx表的ibd文件;

         把目标表的ibd文件再复制到原来的ibd文件处;

         使用alter table xx import tablespace; 来使mysql重新加载改ibd文件,因ibd中存的就是数据行和索引信息,所以达到了需求。

      

        

  • 相关阅读:
    Java入门3.2---线程池
    Java入门3.1---多线程
    打开ppt报"powerpoint无法加载mathtype加载项"错误
    LATEX排版总结
    casbin 权限系统
    Go netpoll I/O 多路复用构建原生网络模型之源码深度解析
    使用winsw包装服务将nginx包装为Windows服务
    Node.js 的模块系统
    一文读懂 babel7 的配置文件加载逻辑
    vue-cli是什么?和 webpack是什么关系?
  • 原文地址:https://www.cnblogs.com/quzq/p/12833272.html
Copyright © 2011-2022 走看看