Перейти к основному содержимому
Перейти к основному содержимому

Поддержка распространения изменений схемы

ClickPipes для MySQL может обнаруживать изменения схемы в исходных таблицах и, в некоторых случаях, автоматически распространять эти изменения на таблицы назначения. Обработка каждой DDL-операции описана ниже:

Тип изменения схемыПоведение
Добавление нового столбца (ALTER TABLE ADD COLUMN ...)Распространяется автоматически. Новые столбцы будут заполняться для всех строк, реплицируемых после изменения схемы
Добавление нового столбца со значением по умолчанию (ALTER TABLE ADD COLUMN ... DEFAULT ...)Распространяется автоматически. Новые столбцы будут заполняться для всех строк, реплицируемых после изменения схемы, но для существующих строк значение по умолчанию не будет отображаться без полного обновления таблицы
Удаление существующего столбца (ALTER TABLE DROP COLUMN ...)Обнаруживается, но не распространяется. Удалённые столбцы будут иметь значение NULL для всех строк, реплицируемых после изменения схемы
Примечание

Добавление столбцов во время создания снимка в настоящее время не поддерживается. Рекомендуемый обходной путь — выполнять снимки до или после запланированных изменений схемы либо, если ClickPipe уже завершается с ошибкой, вручную добавить в целевую таблицу столбец соответствующего типа.

Ограничения MySQL 5.x

Версии MySQL до 8.0.1 не включают полные метаданные столбцов в binlog (binlog_row_metadata=FULL), поэтому ClickPipes отслеживает столбцы по их порядковым позициям. Это означает:

  • Добавление столбца в конец (ALTER TABLE ADD COLUMN ...) поддерживается.
  • Любой DDL, который смещает позиции столбцов, приведёт к тому, что pipe сгенерирует ошибку, поскольку порядковые позиции больше нельзя надёжно сопоставить. К таким операциям относятся:
    • ALTER TABLE DROP COLUMN ...
    • ALTER TABLE ADD COLUMN ... AFTER ... / FIRST
    • ALTER TABLE MODIFY COLUMN ... AFTER ... / FIRST
    • ALTER TABLE CHANGE COLUMN ... AFTER ... / FIRST

Если вы столкнулись с этой ошибкой, вам нужно будет заново выполнить синхронизацию pipe.