将MySQL表和数据从存储引擎MyISAM移动到InnoDB

这个问题可能适用于之前已完成此类迁移的MySQL专家和管理员.

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

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

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

当我在MySQL存储引擎中询问有关迁移的关键注意事项时,我想从有经验的管理员的角度来了解,如果在数据迁移期间明确需要在数据库级别处理某些事情,那么数据库的行为它应该的方式,没有毛刺.我担心的主要是因为我读到InnoDB和MyISAM的缓冲方式,I / O,CPU和内存使用情况不同.

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

谢谢.

*更新*

innodb_buffer_pool_size – {DBInstanceClassMemory * 3/4}这就是它现在设置的内容.

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

最佳答案
MyISAM和InnoDB之间存在许多差异,但在迁移之前应注意哪些要点.
1.只需像在MyISAM中那样复制文件,就无法完成数据备份
2.当使用默认选项运行时,InnoDB无法以优化的方式工作,您必须根据需要进行配置和调整.
3. InnoDB没有像MyISAM这样的压缩索引,所以它会占用更多空间
4. InnoDB自动将主键列附加到辅助键.所以确保主键列不大.

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

如果您需要有关InnoDB配置的任何帮助,可以通知我.

转载注明原文:将MySQL表和数据从存储引擎MyISAM移动到InnoDB - 代码日志