我打算在复制环境中的生产服务器上使用pt-online-schema-change
工具进行表格更改。想要了解pt-online-schema-change
工具因服务器工具而中止时执行的步骤。由于服务器负载而中止后是否可以恢复?它会删除临时表及其创建的触发器吗?我需要重新开始吗?
答案 0 :(得分:1)
pt-online-schema-change
非常详细,正是它正在做的事情。所以,当一些事情失败时,我总能阅读最后一行,并告诉我该怎么做。
特别是当迁移因加载而失败时,触发器尚未被删除。在这种情况下,输出已经准确地说明了我需要执行什么来删除它们。他们可能会继续恢复。我不知道这件事。在我的情况下,我总是放弃触发器并在调整参数或降低数据库使用量后从头开始。如果您不是pt-online-schema-change
执行脚本,我想我的方法可行。
关于自动删除临时表和触发器;默认情况下会删除它们(请参阅documentation)。但是,您始终可以指定--nodrop-old-table
,--nodrop-new-table
和--nodrop-triggers
。对于较大的表(当我有磁盘空间时),我通常总是指定--nodrop-old-table
。这使我能够快速回滚到旧表,以防在出现问题时通过简单的发布交换
RENAME TABLE mytable TO mytable_failedmigration, old-table TO mytable;
如果迁移成功,我会按照https://serverfault.com/a/566710/37237中的说明删除我的巨桌。