【问题标题】:Safe way of changing mysql engine from InnoDB to MyISAM将 mysql 引擎从 InnoDB 更改为 MyISAM 的安全方法
【发布时间】:2014-09-08 07:51:01
【问题描述】:

我有一个运行 CentOs 6.5、PHP-FPM、Mysql 数据库和 Nginx 服务器的 VPS。

我默认安装并使用了 mysql,现在我可以看到它使用 InnoDB 作为默认引擎。因此,在意识到我的 VPS 的 512 内存使用不足后,我开始优化 Nginx 和 PHP-FPM。现在,我了解到 InnoDB 比 MyISAM 引擎使用更多的内存(至少在读取时),所以我正在尝试将 mysql 的默认引擎更改为使用 MyISAM。

问题是,由于我是新手,我担心在更改过程中我可能会损坏数据库,因为我以前几乎没有这样做过。

所以,我做的第一件事就是保存整个 Mysql 数据只是为了安全起见
cp –Rp /var/lib/mysql/*.* /backup

现在根据this answer 更换引擎最简单的方法是

ALTER TABLE table_name ENGINE = MyISAM;

所以,现在我的问题是,它是否安全,如果只需要直接更改我的数据库的引擎,这又会导致内存优化吗?或者有没有别的办法。

【问题讨论】:

标签: mysql optimization innodb myisam


【解决方案1】:

大多数情况下InnoDBMyISAM 更好。你可以阅读更多关于它的信息here。一切都取决于你的桌子。如果您想从中读取(插入/更新/删除不多),那么您可以考虑MyISAM。在其他情况下,如果有很多写操作,我建议您留在InnoDB

回到你的问题:ALTER TABLE table_name ENGINE = MyISAM; 是安全的。这可能需要一段时间(在大表上),但在此操作之后您的数据不应该被破坏。如果有任何问题,MySQL 会通知您并且不会执行转换。在最坏的情况下,您有备份,您可以随时恢复它。

【讨论】:

  • 谢谢,这很有帮助。无论如何要从数据库级别更改引擎?而不是单独更改所有表格?或者可能更改数据库中的所有表?
  • 您可以设置默认引擎(如果未指定另一个表,将使用此类型创建新表)。但恐怕我不知道如何通过一个查询更改所有现有表的引擎。我认为您必须为每个人单独更改它。
猜你喜欢
  • 2013-04-25
  • 2014-02-26
  • 1970-01-01
  • 2010-11-12
  • 1970-01-01
  • 2011-11-19
  • 1970-01-01
  • 2012-10-02
  • 1970-01-01
相关资源
最近更新 更多