Что делает инструмент pt-online-schema-change, если он прерывается?
Я планирую использовать pt-online-schema-change
инструмент для изменения таблицы на рабочем сервере в среде репликации. Хотел понять, какие шаги выполняются когда pt-online-schema-change
инструмент прерывается из-за серверного инструмента. Можно ли возобновить работу после ее прерывания из-за нагрузки на сервер? он удалит временную таблицу и триггеры, которые он создал? Нужно ли начинать все сначала?
1 ответ
pt-online-schema-change
очень многословно с точно, что он делает. Так что, когда что-то не получается, я всегда мог прочитать последние строки, и они скажут мне, что делать.
В частности, когда миграции не удалось из-за нагрузки, триггеры не были сброшены. В этом случае выходные данные точно указали, что мне нужно выполнить, чтобы отбросить их. Возможно, они сохраняются, чтобы иметь возможность возобновить. Я не знаю об этом. В моем случае я всегда сбрасывал триггеры и начинал с нуля после подстройки параметров или снижения использования базы данных. Я думаю, мой способ сделать это работает, если вы не пишете сценарии pt-online-schema-change
казни.
Что касается автоматизации удаления временной таблицы и триггеров; По умолчанию он удаляет их (см. Документацию). Тем не менее, вы всегда можете указать --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.