gpt4 book ai didi

mysql - 无需停机即可更改大型表

转载 作者:行者123 更新时间:2023-11-29 18:34:17 26 4
gpt4 key购买 nike

我有一个非常大的表,让我们称之为示例,我尝试在该表上执行一些更改命令:

ALTER TABLE `example` ADD `example_column` TINYINT(1) NOT NULL DEFAULT 0;

检查alter命令的进度:

mysql -e 'show engine innodb status \G' | grep 'undo \| log \| entries'

给我一​​些关于时间的好信息 - 或多或少需要 17 天才能完成......

更改阻止表,因此阻止生产表 17 天不是一个好的选择。 ;)

我尝试研究网上一些很棒的工具,例如:

  1. Pt-online-schema-change - Percona
  2. gh-ost - GitHub 的 MySQL 在线架构迁移

我还阅读了文档,以及上述工具的限制部分:

gh-ost limitations

  • 根本不支持触发器
  • 根本不支持外键

pt-online-schema-change limitations

  • 使用触发器意味着如果表上已定义任何触发器,则该工具将无法工作。
  • 没有提供任何更改包含外键的表的好方法

我的示例表有触发器和外键...

你能给我一些建议,如何处理这个改变吗?

我有 MySQL 5.6。我使用 GTID(基于行)复制。

我将非常感谢您的建议!

最佳答案

1.创建新表

2.将现有表行复制到这个新表中。

3.删除旧表

4.重命名新表名称。

5.将旧表中的行复制到新表时,您会在新表和旧表中插入传入的写入请求,以便新表中拥有完整的行。

关于mysql - 无需停机即可更改大型表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45436134/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com