По своей сути инструмент не окажет существенного влияния на производительность.Во-первых, давайте рассмотрим, что делает инструмент:
- прикрепить триггеры к текущей таблице, чтобы скопировать все обновления, удаления и вставки в новую таблицу.
- скопировать существующие данные по частям, разделенный ключом
Первая часть собирается удвоить все записи, и нет никакого способа обойти это.Вторая часть представляет собой пакетную операцию, которая потенциально блокирует текущую таблицу и использует много операций ввода-вывода.
К счастью, вторая часть разбита на куски, а pt-online-schema-change
довольно сообразителен, насколько великаколичество чанков и время ожидания между чанками:
- он проверяет ведомую репликацию между чанками и делает паузу, если задержка слишком велика.он может рекурсивно проверять наличие ведомых.
- проверяет нагрузку (обычно измеряется числом запущенных потоков) и делает паузу, если выполняется слишком много запросов (что подразумевает конфликт блокировки или высокую загрузку ЦП/ IO использование).он может даже прерваться, если нагрузка слишком высока.
- он настраивает параметры блокировки InnoDB таким образом, что он, скорее всего, станет жертвой любого конфликта блокировки, поэтому производственные запросы будут работать бесперебойно.
- по умолчанию, размер чанка динамически изменяется , чтобы поддерживать согласованность времени выполнения с использованием средневзвешенного значения предыдущих чанков.
- чанков, которые слишком велики (например, из-за огромного количества строк с одним и тем же ключом) будет пропущено .
В связи с этим, вероятно, что ваш сервер будет толькослегка зависит от копии.Но, конечно, нет никакой гарантии, и, если возможно, вам следует запустить инструмент в промежуточной версии базы данных.В случае возникновения проблем вы можете безопасно прервать работу инструмента без потери данных.