Поддержка распространения изменений схемы
ClickPipes для MySQL может обнаруживать изменения схемы в исходных таблицах и, в некоторых случаях, автоматически распространять эти изменения на таблицы назначения. Обработка каждой DDL-операции описана ниже:
| Тип изменения схемы | Поведение |
|---|---|
Добавление нового столбца (ALTER TABLE ADD COLUMN ...) | Распространяется автоматически. Новый столбец (новые столбцы) будет (будут) заполняться для всех строк, реплицируемых после изменения схемы |
Добавление нового столбца со значением по умолчанию (ALTER TABLE ADD COLUMN ... DEFAULT ...) | Распространяется автоматически. Новый столбец (новые столбцы) будет (будут) заполняться для всех строк, реплицируемых после изменения схемы, но для существующих строк значение по умолчанию не будет отображаться без полного обновления таблицы |
Удаление существующего столбца (ALTER TABLE DROP COLUMN ...) | Обнаруживается, но не распространяется. Удалённый столбец (удалённые столбцы) будет (будут) иметь значение NULL для всех строк, реплицируемых после изменения схемы |
Ограничения 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 .../FIRSTALTER TABLE MODIFY COLUMN ... AFTER .../FIRSTALTER TABLE CHANGE COLUMN ... AFTER .../FIRST
Если вы столкнулись с этой ошибкой, вам нужно будет заново выполнить синхронизацию pipe.