问题:
您需要创建索引在生产环境中的海量 MySQL 表上,而不中断正在进行的操作。
传统智慧(2015):
在 5.6 之前的 MySQL 版本中,在MyISAM 或 InnoDB 表会阻止写入操作。
MySQL 5.6 (2017) 中的在线索引更新:
MySQL 5.6 及更高版本支持在线索引更新,允许您添加或更新索引删除索引而不阻塞读取或写入。
在不停机的情况下更新架构:
如果您无法使用 MySQL 5.6 或更高版本,可以使用以下方法更新架构无需停机:
Percona 的 pt-online-schema-change 工具:
此工具提供了一种在不阻塞操作的情况下更改表架构的替代方法。它会创建一个具有所需结构的新表,进行架构更改,并在替换原始表之前逐步复制原始表中的数据。
Amazon RDS:
Amazon RDS通过允许您创建只读副本、对副本进行架构更改,然后将副本提升为新的主服务器,简化了流程。这种方法可以最大限度地减少停机时间并简化切换过程。
以上是如何在不锁表的情况下为巨大的MySQL生产表创建索引?的详细内容。更多信息请关注PHP中文网其他相关文章!