我可以安全地切换到Innodb file-per-table并删除ibdata1吗?

时间:2012-09-22 23:40:32

标签: mysql innodb

我可以安全地切换到Innodb file-per-table并删除ibdata1吗?这是我的攻击计划。我最近备份了所有数据。

  1. 我将innodb_file_per_table = 1添加到/etc/my.cnf,然后重新启动
  2. 我跑了ALTER tablename ENGINE = InnoDB;在每个Innodb表上
  3. 接下来,我想:

    1. 停止MySQL
    2. 删除ibdata1,ib_logfile0,ib_logfile1
    3. 启动MySQL
    4. 这会有用吗?

1 个答案:

答案 0 :(得分:2)

根据the documentation

  

启用多个表空间后,InnoDB会存储每个新创建的表空间   表在相应数据库中自己的tbl_name.ibd文件中   目录。与MyISAM存储引擎不同,它是独立的   索引和数据的tbl_name.MYD和tbl_name.MYI文件,InnoDB   将数据和索引一起存储在单个.ibd文件中。该   仍像往常一样创建tbl_name.frm文件。

     

如果从my.cnf中删除innodb_file_per_table行并重新启动   在服务器上,InnoDB在共享表空间内创建任何新表   文件。

     

您始终可以访问系统表空间和表中的两个表   在他们自己的表空间中,无论每个表的文件设置如何。

您的问题的答案:不,您不能删除ibdata1,ib_logfile0或ib_logfile1,因为只启用该选项不会移动您现有的数据。