使用 pt-online-schema-change 添加新列并填充它

Use pt-online-schema-change to add new column and populate it

我需要向现有的 MySQL table 添加一个新列并填充从另一列计算的值。 有没有办法使用 pt-online-schema-change 来做到这一点?

谢谢

pt-online-schema 更改 运行s ALTER TABLE 语句,而不是 UPDATE 语句。如果您需要填充列,您有两个选择:

  • 添加具有 pt-online-schema 更改的列。然后在完成之后,使用 UPDATE 用数据填充列。建议分批进行更新。例如,我 运行 一次在 1000 行上,并重复该操作,直到 UPDATE 报告您更改了 0 行。

    UPDATE mytable SET mynewcolumn = <expr> 
    WHERE mynewcolumn IS NULL LIMIT 1000;
    
  • 如果您使用 MySQL 5.7 或更高版本,请将列定义为 GENERATED column.