此问题可能适用于之前已完成此类迁移的MySQL专家和管理员。
我在MyISAM存储引擎上有17个MySQL表,触发器和存储过程。这些表共有大约8个MiB数据。由于我正在将应用程序和数据库移动到Amazon EC2和RDS,因此我想知道将表从MyISAM迁移到InnoDB时的关键考虑因素。
我将要完成的步骤大致如下。
当我在MySQL存储引擎中询问有关此类迁移的关键注意事项时,我想从有经验的管理员的角度来了解,如果在数据迁移期间明确需要在数据库级别处理某些事情,那么数据库的行为应该如此,并且没有故障。我担心的主要是因为我读到InnoDB和MyISAM的缓冲方式,I / O,CPU和内存使用方式不同。
我很乐意在这个过程中接受你的2美分。
感谢。
*的 更新 *
innodb_buffer_pool_size - {DBInstanceClassMemory * 3/4}这就是它现在设置的内容。
我也在寻找其他参数。如果您想查看为任何其他特定参数设置的值,请与我们联系。
答案 0 :(得分:2)
MyISAM和InnoDB之间存在许多差异,但在迁移之前应注意哪些要点。 1.只需像在MyISAM中那样复制文件,就无法完成数据备份 2.当使用默认选项运行时,InnoDB无法以优化的方式工作,您必须根据需要进行配置和调整。 3. InnoDB没有像MyISAM这样的压缩索引,所以它会占用更多空间 4. InnoDB自动将主键列附加到辅助键。所以确保主键列不大。
除了迁移应该很容易。 1.创建具有与MyISAM类似结构的表,但仅将引擎更改为InnoDB。 2.转储MyISAM表中的数据 3.在InnoDB引擎中以主键顺序导入数据,包含START TRANSACTION和COMMIT之间的导入,这是加载数据的最快方法。 4.创建存储过程并触发。但它们与存储引擎无关。
如果您需要有关InnoDB配置的任何帮助,可以告诉我。
答案 1 :(得分:1)
如果您想将当前表格转换为INNODB,可以采用以下方法:
ALTER TABLE t1 ENGINE = InnoDB;
请参阅MySQL doc。
在您进入云端之前在自己的服务器上执行此操作是一个好主意 - 不要同时更改两个参数!
InnoDB引擎中有很多不同的东西,但我确信用你最喜欢的搜索引擎几分钟就能告诉你。
答案 2 :(得分:0)
迁移过程本身非常简单。转储将记录需要重建的所有必要对象。您只需要删除(或更改,如果默认不是您想要的),存储引擎子句。您可能需要担心的是,为MyISAM编写的应用程序可能假设永远不需要提交事务。所以,无论如何,几年前我逃脱了这个:
mysqldump --all-databases | perl -pwe 's/\) TYPE=MyISAM/\)/' >dump.sql
mysql <dump.sql
在必要时添加提交和回滚。