天天看点

mysql修改表的存储引擎

将表从一个引擎改为另一个引擎的方法

最简单的方法

但是如果表数据量大,则需要执行很长时间。因为mysql会按行将数据从原表复制到新表,在复制期间可能会消耗系统所有的IO,同时原表上会加读锁,所以业务繁忙的表要小心该操作。

一种解决方案是使用导出导入

- 使用mysqldump导出文件

- 修改文件中的create table语句的存储引擎选项,同时修改表名(注意:mysqldump会在create table前加上drop table语句,不注意可能导致数据丢失)

- 导入文件

-

先创建新存储引擎的表,然后使用insert。。。select语法导数据

数据量不大时:

数据量大时,可以分批处理,避免大事务产生过多的undo

使用percona toolkit提供的pt_online-schema-change的工具实现在线schema变更

该工具详细使用方式请参考

<a href="https://www.percona.com/doc/percona-toolkit/2.2/pt-online-schema-change.html">https://www.percona.com/doc/percona-toolkit/2.2/pt-online-schema-change.html</a>