zoukankan      html  css  js  c++  java
  • innodb_file_per_table

    共享InnoDB / var / lib / mysql / ibdata1存储的问题
    InnoDB表当前将数据和索引存储到共享表空间(/ var / lib / mysql / ibdata1)。由于共享表空间,一个InnoDB表的数据损坏可能导致MySQL无法在整个计算机上启动。修复InnoDB损坏可能非常难以执行,并且可能导致在修复过程中最初未损坏的表的数据丢失。

    由于MySQL 5.5将使用InnoDB作为默认存储引擎,因此考虑继续利用/ var / lib / mysql / ibdata1中的共享表空间的后果非常重要。

    使用innodb_file_per_table更改为每表表空间

    作为解决问题的选项,MySQL有一个名为innodb_file per_table的配置变量。要使用此变量,可以将以下内容放入/etc/my.cnf,以将InnoDB转换为每个InnoDB引擎表的每个表文件:

    码:
    innodb_file_per_table = 1

    添加该行后,需要在机器上重新启动MySQL。

    在/etc/my.cnf中使用该行的结果将导致在添加行之后的任何数据库在/ var / lib / mysql / database / location中创建.idb文件。请注意,共享表空间仍将保留内部数据字典和撤消日志。

    转换旧的InnoDB表

    任何设置为先前在ibdata1中共享表空间的InnoDB表的旧数据库仍将使用该文件,因此需要将这些旧数据库切换到新系统。MySQL CLI中的以下命令将创建InnoDB引擎表的列表以及为每个引擎运行的命令,以将它们转换为新的innodb_file_per_table系统:

    代码:
    select concat('alter table ',TABLE_SCHEMA ,'.',table_name,' ENGINE=InnoDB;') FROM INFORMATION_SCHEMA.tables where table_type='BASE TABLE' and engine = 'InnoDB';

    我的测试计算机上的Roundcube示例在运行previous命令时显示以下返回值:

    码:
    alter table roundcube.cache ENGINE = InnoDB;
    alter table roundcube.contacts ENGINE = InnoDB;
    alter table roundcube.identities ENGINE = InnoDB;
    alter table roundcube.messages ENGINE = InnoDB;
    alter table roundcube.session ENGINE = InnoDB;
    alter table roundcube.users ENGINE = InnoDB;

    然后,您只需发出MySQL CLI指出的命令,然后将每个表转换为新的innodb_file_per_table格式。

    请注意,这些命令只需要在MySQL命令行中进行转换,可以通过在bash提示符下输入mysql在root SSH中访问。

    转换旧InnoDB表的可能问题

    1.转换期间可能发生系统负载
    2.驱动器空间填满转换的可能问题

  • 相关阅读:
    20120110 自己写的基于jquery的翻页效果
    搜来的 可爱的if ie
    哎~~~纠结死了的终于解决的i6的fixed属性
    2011815发现可好的js繁简转换代码 写这些的人。。好厉害呀 收藏了~~~
    网站制作CSS图片转换滤镜代码(貌似只对ie有用。。。)
    2011811 右下角弹出渐隐的广告代码 可以关闭 可以缩小 还各种兼容(ff opera ie6、7、8都试过了)值得保留哎~~~
    20120604 自己写的基于jquery的类似百度贴吧头像提示效果
    UFT textUtil object 解决奇怪问题
    UFT send request & get response
    UFT connect sql (1)
  • 原文地址:https://www.cnblogs.com/DataArt/p/10203395.html
Copyright © 2011-2022 走看看