1. 迁移前须知
因为MyISAM不支持事务,所以当转化为InnoDB需要注意事务相关的参数影响
在InnoDB中我们可能会遇到死锁,一般情况下我们对于死锁无需关注,MySQL会自己处理,不过如果我们在error日志中发现大量的死锁,就需要我们检查应用并进行相应的处理
我们可以根据如下规范来操作
我们可以使用如下命令直接转换
ALTER TABLE table_name ENGINE=InnoDB;
注意不要转换mysql数据库的系统表,否则将导致数据库无法启动
我们也可以通过克隆的方式来进行
首先新建一个结构相同的InnoDB表
使用如下命令查看原表结构
SHOW CREATE TABLE table_name\G
注意将ENGINE=MyISAM改成ENGINE=INNODB
之后使用如下语句导入数据
INSERT INTO innodb_table SELECT * FROM myisam_table ORDER BY primary_key_columns
导入后将克隆的表重命名为原表
提速措施
https://dev.mysql.com/doc/refman/5.7/en/converting-tables-to-innodb.html