使用ALGORITHM=INPLACE对于MySql来说是否安全?

5

MySql中的ALTER TABLE允许使用ALGORITHM=INPLACE来避免在修改期间进行表复制。但默认情况下,它们使用复制而不是原地修改。为什么?默认值用于向后兼容性还是存在一些限制或无法使用原地修改的情况?

P.S. MySql是Percona-Server-server-56.x86_64 5.6.29。


你知道Percona有一个定制的InnoDB吗?此外,还有关于如何进行同步的设置,包括bin_log等内容,以及是否锁定表/行。 - iGNEOS
你有没有找到为什么复制是默认选项的原因?我猜主要是出于安全考虑,但正如你所提到的,向后兼容性也可能是一个问题。根据 https://dba.stackexchange.com/a/162411/243271 ,有一种特殊情况会导致两种算法产生不同的结果,但在绝大多数情况下,两者会产生相同的结果,并且你很可能更喜欢INPLACE而不是COPY。但是,“为什么?”是一个好问题,在这里还没有出现明确的答案... - allyourcode
1个回答

6

是的。在许多情况下,您可以使用它。请参见在线DDL操作列表

如果无法使用INPLACE算法,MySQL会告诉您,然后您可以恢复使用DEFAULT(即:复制)或使用pt-online-schema-change


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