恢复中断的 pt-online-schema-change 任务

恢复中断的 pt-online-schema-change 任务

💡 原文英文,约2000词,阅读约需8分钟。
📝

内容提要

Percona Toolkit 3.6.0引入了--resume选项,允许在中断后恢复pt-online-schema-change。使用--history选项来指示进度存储在历史表中。历史表结构包括job_id、db、tbl等字段。

🔎

延伸解读

恢复作业的前提条件

要使用--resume恢复中断的pt-online-schema-change作业,必须同时使用--history、--no-drop-new-table和--no-drop-triggers选项。--history将进度记录到历史表,--no-drop-new-table和--no-drop-triggers确保新表和触发器在失败后不被删除,从而保留已复制的数据。缺少任一选项,恢复将无法进行。

历史表的作用与结构

历史表(默认percona.pt_osc_history)记录每次作业的详细信息,包括job_id、数据库名、表名、新表名、ALTER命令、其他参数、处理块的上下边界以及完成状态。通过查询历史表,可以找到失败作业的ID和中断位置,为恢复提供依据。如果表索引包含二进制列,需使用--binary-index选项创建历史表。

恢复机制与注意事项

使用--resume=失败作业ID时,工具会检查之前创建的新表和触发器是否仍然存在,并从失败的块开始继续复制数据。如果新表或触发器已被删除,工具会提示从零开始,无法恢复。此外,如果不使用--history选项,作业失败后将无法再次恢复。因此,对于可能中断的重要作业,建议始终启用--history及相关选项。

❓

Q&A

如何恢复中断的pt-online-schema-change任务?

使用--resume选项并提供失败作业的ID来恢复任务,同时需要使用--history、--no-drop-new-table和--no-drop-triggers选项。

pt-online-schema-change的历史表结构是什么?

历史表结构包括job_id、db、tbl、新表名、ALTER命令、其他参数、边界值和完成状态等字段。

使用--history选项有什么好处?

使用--history选项可以将作业进度存储在历史表中,便于后续恢复作业。

如果不使用--history选项会怎样?

如果不使用--history选项,作业失败后将无法恢复。

如何创建包含二进制列的历史表?

如果表索引包含二进制列,需使用--binary-index选项创建历史表。

pt-online-schema-change的默认历史表名是什么?

默认历史表名为percona.pt_osc_history。

🏷️

标签

➡️

继续阅读