sql—应用程序在生产环境中运行时更改mysql存储引擎的后果

93ze6v8z  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(360)

我们有一个正在运行的应用程序,它在多线程环境中使用mysql。我们有大约25个表,其中20个表使用innodb作为存储引擎,5个表使用myisam作为存储引擎。
我们将把这5个表的存储引擎改为innodb。如果在运行应用程序时更改它,会不会引起一些问题

n7taea2i

n7taea2i1#

你有什么改变吗 ALTER TABLE 需要表副本的将锁定该表。这是应用程序最重要的问题。任何应用程序都无法通过查询访问该表。
此锁定持续的时间取决于表的大小、服务器的性能以及服务器所承受的其他负载。
如果您使用像pt online schema change这样的在线模式更改工具,您可以在最少的停机时间内进行更改。
另一种策略是对副本数据库示例上的表进行更改。表在复制副本上的存储引擎与在主副本上的存储引擎不同是可以的。您不关心表是否被锁定,它只会使复制滞后,然后当更改完成时,复制应该会迎头赶上。完成这些之后,您可以将应用程序切换到使用复制副本,然后解除前主数据库示例的使用。

相关问题