我有一个非常大的表,让我们调用它的例子,然后我尝试在该表上执行一个小的alter命令:
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天不是一个好选择。 ;)
我尝试在网上调查一些很棒的工具,例如:
我还阅读了上述工具的文档和限制部分:
pt-online-schema-change limitations
我的示例表有触发器和外键......
你能给我一些建议吗,如何应对这种变化?
我有MySQL 5.6。我使用GTID(基于行)复制。
我将非常感谢您的建议!
答案 0 :(得分:0)
1.创建新表
2.将现有表格行复制到这个新表中。
3.删除旧表
4.重命名新表名。
5.虽然将行从旧表复制到新表,但您确实在新表和旧表中插入了传入的写请求,因此您将在新表中包含完整的行。