【问题标题】:Move MySQL tables and data from storage engine MyISAM to InnoDB将 MySQL 表和数据从存储引擎 MyISAM 移动到 InnoDB
【发布时间】:2011-09-07 07:30:50
【问题描述】:

这个问题可能是针对以前做过这种迁移的 MySQL 专家和管理员的。

我在 MyISAM 存储引擎上有 17 个 MySQL 表、触发器和存储过程。这些表总共有大约 8 MiB 数据。由于我将应用程序和数据库迁移到 Amazon EC2 和 RDS,我想知道将表从 MyISAM 迁移到 InnoDB 时的关键考虑因素是什么。

我将要经历的步骤大致如下。

  1. AWS RDS 上的系统表必须在 MyISAM 上,所以没有竞争。
  2. 创建 17 个具有与 MyISAM 上相同结构的表,并在 RDS InnoDB 中构建它们。
  3. 从 MyISAM 表中导出数据并将它们导入到在 InnoDB 上的 RDS 中创建的新表中。
  4. 在 InnoDB 数据库中创建触发器、存储过程和函数。

当我询问跨 MySQL 存储引擎进行此类迁移的关键注意事项时,我想从经验丰富的管理员的角度了解在数据迁移等期间是否需要在数据库级别明确处理某些事情,以便数据库按照应有的方式运行,并且没有故障。我担心主要是因为我读到 InnoDB 和 MyISAM 的缓冲方式、I/O、CPU 和内存使用不同。

我很乐意在这个过程中接受你的 2 美分。

谢谢。

*更新*

innodb_buffer_pool_size - {DBInstanceClassMemory*3/4} 这是它现在设置的值。

我也在寻找其他参数。如果您想查看为任何其他特定参数设置的值,请​​告诉我。

【问题讨论】:

    标签: mysql innodb myisam


    【解决方案1】:

    MyISAM 和 InnoDB 之间有许多不同之处,但在迁移之前您应该注意的要点。, 1.数据备份不能像MyISAM那样通过简单的复制文件来完成 2. InnoDB 在使用默认选项运行时不会以优化的方式工作,您必须根据需要进行配置和调整。 3. InnoDB 没有像 MyISAM 这样的压缩索引,所以它会占用更多空间 4. InnoDB 自动将主键列附加到辅助键。所以请确保主键列不大。,

    除此之外,迁移应该很容易。 1. 创建与 MyISAM 结构相似的表,但仅将引擎更改为 InnoDB。 2.从MyISAM表中转储数据 3、在InnoDB引擎中以主键顺序导入数据,包裹START TRANSACTION和COMMIT之间的导入,这是加载数据的最快方式。 4.创建存储过程和触发器。,。但它们与存储引擎无关。

    如果您需要有关 InnoDB 配置的任何帮助,可以告诉我。

    【讨论】:

    • 您建议在 RDS 中设置哪些 InnoDB 参数或配置值以使其性能有效?谢谢。我正在按照步骤操作。
    【解决方案2】:

    如果你想将你当前的表转换成 INNODB,这里有一个简单的方法:

    ALTER TABLE t1 ENGINE = InnoDB;
    

    请参阅MySQL doc

    在您上云之前在您自己的服务器上执行此操作是一个好主意 - 不要同时更改两个参数!

    InnoDB 引擎有很多不同之处,但我相信几分钟后你最喜欢的搜索引擎就会告诉你这一点。

    【讨论】:

    • 这行得通...我尝试在我的服务器中更改 MyISAM 表上的引擎,它确实改变了它。我想了解执行此引擎更改表脚本时表和数据实际发生的变化......阅读更多内容!谢谢。
    • 您将获得 innodb 的所有乐趣(行级锁定等)和所有的痛苦(无计数(*)等)。
    【解决方案3】:

    迁移过程本身非常简单。 Dump 将记录所有需要重建的必要对象。您只需要删除(或更改,如果默认值不是您想要的),存储引擎子句。您可能需要担心的是,为 MyISAM 编写的应用程序可能会假设永远不需要提交事务。所以无论如何,几年前我逃脱了这个:

    mysqldump --all-databases | perl -pwe 's/\) TYPE=MyISAM/\)/' >dump.sql
    mysql <dump.sql
    

    在必要时添加提交和回滚。

    【讨论】:

      猜你喜欢
      • 2012-05-04
      • 2016-12-23
      • 2013-04-25
      • 2011-11-19
      • 2014-02-26
      • 2012-10-02
      • 1970-01-01
      • 1970-01-01
      • 2019-01-14
      相关资源
      最近更新 更多