Schema 变更传播支持
用于 MySQL 的 ClickPipes 可以检测源表中的 schema 变更,并在某些情况下自动将这些变更传播到目标表。下面记录了每种 DDL 操作的处理方式:
| Schema 变更类型 | 行为 |
|---|---|
添加新列(ALTER TABLE ADD COLUMN ...) | 自动传播。新列将在 schema 变更之后同步的所有行中被填充 |
使用默认值添加新列(ALTER TABLE ADD COLUMN ... DEFAULT ...) | 自动传播。新列将在 schema 变更之后同步的所有行中被填充,但已有的行在未执行整表刷新前不会显示默认值 |
删除已有列(ALTER TABLE DROP COLUMN ...) | 可检测,但不会传播。被删除的列在 schema 变更之后同步的所有行中将被填充为 NULL |
MySQL 5.x 限制
8.0.1 之前的 MySQL 版本在 binlog 中不会包含完整的列元数据(binlog_row_metadata=FULL),因此 ClickPipes 会根据列的序号位置进行跟踪。也就是说:
- 在末尾新增列(
ALTER TABLE ADD COLUMN ...)是支持的。 - 任何会改变列位置的 DDL 都会导致管道报错,因为列序号位置不再能被可靠映射。包括:
ALTER TABLE DROP COLUMN ...ALTER TABLE ADD COLUMN ... AFTER .../FIRSTALTER TABLE MODIFY COLUMN ... AFTER .../FIRSTALTER TABLE CHANGE COLUMN ... AFTER .../FIRST
如果遇到此错误,则需要重新同步该管道。