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