首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从InnoDB表转换为innodb_file_per_table表

从InnoDB表转换为innodb_file_per_table表
EN

Database Administration用户
提问于 2016-06-20 01:07:13
回答 2查看 1.7K关注 0票数 2

我运行MySQL,我有7个模式,其中6个模式是MyISAM。

在我的一个模式中,我有20个表是InnoDB,其余的是MyISAM。

我真的很想把这20个表转换成file_per_table。

我阅读了一些关于如何做到这一点的旧文档,但我想知道这种方法是否有效。

  1. 从20个表中导出外键。
  2. 把外键放下。
  3. 将表转换为MyISAM。
  4. 阻止MySQL。
  5. 将my.cnf/ini更改为将MySQL置于innodb_file_per_table模式。
  6. 删除idbdata文件。
  7. 启动MySQL。
  8. 将这些表切换回InnoDB (现在应该处于文件模式)。
  9. 重新应用外键。

我有错过任何步骤吗?还是我在哪里搞错了?

EN

回答 2

Database Administration用户

回答已采纳

发布于 2016-06-20 04:43:54

您提到的过程运行得很好,但是如果这里的表的大小更大,您可以快速地完成它,则需要大量的时间,.but,它需要一些停机时间,这取决于表的大小。

  1. 对20个InnoDB表进行完整备份。
  2. 删除这20个InnoDB表
  3. 停止mysql
  4. 删除ibdata文件
  5. 使用innodb_file_per_table=1在my.cnf中启动mysql服务
  6. 用已采取的备份恢复这20个InnoDB表。
票数 3
EN

Database Administration用户

发布于 2016-06-23 04:44:28

使用innodb_file_per_table=on在my.cnf中重新启动mysql服务,并将表重命名为另一个数据库,然后再重命名为原始数据库,然后它将创建每个表的文件选项。

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/141675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档