跳转到主内容
跳转到主内容

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 ... / FIRST
    • ALTER TABLE MODIFY COLUMN ... AFTER ... / FIRST
    • ALTER TABLE CHANGE COLUMN ... AFTER ... / FIRST

如果遇到此错误,则需要重新同步该管道。