小编cra*_*ike的帖子

无需停机即可更改大表

我有一个非常大的表,让我们调用它example,然后我尝试在该表上执行一些更改命令:

ALTER TABLE `example` ADD `example_column` TINYINT(1) NOT NULL DEFAULT 0;
Run Code Online (Sandbox Code Playgroud)

检查alter命令的进度:

mysql -e 'show engine innodb status \G' | grep 'undo \| log \| entries'
Run Code Online (Sandbox Code Playgroud)

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

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

我尝试在网上调查一些很棒的工具,例如:

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

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

鬼魂限制

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

pt-online-schema-change 限制

  • 触发器的使用意味着如果表上已经定义了任何触发器,则该工具将无法工作。

  • 不提供任何改变包含外键的表的好方法

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

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

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

我将非常感谢您的建议!

mysql alter-table mysql-5.6 percona-toolkit

9
推荐指数
1
解决办法
1万
查看次数

标签 统计

alter-table ×1

mysql ×1

mysql-5.6 ×1

percona-toolkit ×1