我目前正在尝试给一个大约有2500万行的表格添加一列。我需要实现几乎零停机时间,因此希望使用在线DDL。它运行了一段时间,但最终遇到了以下问题:
"Duplicate entry '1234' for key 'PRIMARY'"
[SQL: u'ALTER TABLE my_table ADD COLUMN my_coumn BOOL NOT NULL DEFAULT false']
我认为出现这种情况是因为在操作期间针对该表运行了
INSERT ... ON DUPLICATE KEY UPDATE ...
操作。这似乎是一个已知的限制。在此无法正常工作后,我尝试使用Percona
pt-online-schema-change
工具,但不幸的是,由于我的表具有生成列,因此也无法使用并出现错误:The value specified for generated column 'my_generated_column' in table '_my_table_new' is not allowed.
所以,我现在有些困惑。如何在不阻塞DML操作的情况下添加一列?
pt-online-schema-change
(Percona),这也是你建议我使用的。 - Eli