从InnoDB到MyISAM安全更改MySQL引擎的方法

3
我有一个运行CentOs 6.5、PHP-FPM、MySQL数据库和Nginx服务器的VPS。
我默认安装并使用了MySQL,现在我发现它正在使用InnoDB作为默认引擎。因此,在意识到我的VPS已经用完了512MB的内存后,我开始优化Nginx和PHP-FPM。现在,我已经知道InnoDB比MyISAM引擎在读取时使用更多的内存,所以我正在尝试将MySQL的默认引擎更改为使用MyISAM。
问题是,由于我是新手,我担心在更改过程中可能会损坏数据库,因为我之前几乎没有这样做过。
所以,我首先要做的就是为了保险起见保存整个MySQL数据
cp –Rp /var/lib/mysql/*.* /backup 现根据此答案,更改引擎的最简单方法是 ALTER TABLE table_name ENGINE = MyISAM; 那么,现在我的问题是,这样做是否安全?如果直接更改我的数据库的引擎,这将导致内存优化吗?还是有其他方法?

可能是如何将所有MyISAM表转换为InnoDB的重复问题?(链接:https://dev59.com/KW865IYBdhLWcg3wW9RE) - T.Todua
1个回答

2

大多数情况下,InnoDBMyISAM更好。您可以在这里了解更多信息。一切都取决于您的表格。如果您想从中读取(没有太多的插入/更新/删除),那么可以考虑使用MyISAM。在其他情况下,如果有许多写操作,我建议您留在InnoDB

回到您的问题:ALTER TABLE table_name ENGINE = MyISAM;是安全的。对于大型表格,可能需要一些时间,但此操作后您的数据不应该会损坏。如果出现任何问题,MySQL会通知您并且不会执行转换。在最坏的情况下,您有备份,可以随时恢复它。


谢谢,这很有帮助。有没有办法从数据库层面上更改引擎?而不是必须逐个更改所有表格?或者可以更改整个数据库中的所有表格吗? - robue-a7119895
您可以设置默认引擎(如果未指定其他引擎,则将使用此类型创建新表)。但是,我不知道如何通过一个查询更改所有现有表的引擎。我认为您必须逐个更改每个表的引擎。 - Kasyx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接