Todos los productos
Search
Centro de documentos

Realtime Compute for Apache Flink:Configuraciones de evolución de esquema

Última actualización: Oct 10, 2026

Este tema describe las configuraciones de evolución de esquema para los trabajos de ingesta de datos de Flink CDC.

Configuraciones de evolución de esquema

Los trabajos de ingesta de datos de Flink CDC sincronizan cambios de esquema desde el origen hasta la tabla de destino. Entre estos cambios se incluyen crear una tabla, agregar una columna, renombrar una columna, modificar un tipo de columna, eliminar una columna y eliminar una tabla.

Es posible que la tabla de destino no admita todos los cambios de esquema. Agregue la opción schema.change.behavior al módulo pipeline para controlar cómo gestiona la tabla de destino cada cambio de esquema.

pipeline:
  schema.change.behavior: EVOLVE

Actualmente, el framework solo admite la sincronización de los siguientes tipos de cambios de esquema. Los cambios que no aparecen en esta lista pueden provocar excepciones en el trabajo y requerir un reinicio sin estado para su recuperación.

  • Crear tabla (CREATE TABLE ...)

  • Agregar columna (ALTER TABLE ... ADD COLUMN ...)

  • Modificar tipo de columna (ALTER TABLE ... MODIFY COLUMN ...)

  • Eliminar columna (ALTER TABLE ... DROP COLUMN ...)

  • Renombrar columna (ALTER TABLE ... RENAME COLUMN ...)

  • Truncar tabla (TRUNCATE TABLE ...)

  • Eliminar tabla (DROP TABLE ...)

  • Modificar orden de columnas (MODIFY COLUMN ... FIRST/AFTER o CHANGE COLUMN ... FIRST/AFTER)

Nota

El evento de modificación del orden de columnas se reconoce y procesa a partir de VVR 11.9.

Comportamiento de evolución de esquema

Modo

Descripción

LENIENT (predeterminado)

El trabajo de ingesta de datos de Flink CDC convierte los cambios de esquema de forma flexible y los envía a la tabla de destino. La conversión sigue estas reglas:

  • No se envían los cambios de eliminación de tabla, truncamiento de tabla ni modificación del orden de columnas.

  • Cuando se renombra una columna, se envían un evento de modificación de tipo de columna y otro de agregación de columna. La columna original no se elimina. Su tipo cambia a nullable y se agrega una nueva columna con el nombre nuevo y un tipo de dato nullable.

  • Si se elimina una columna, se envía un evento de modificación de tipo de columna y el tipo del campo pasa a ser nullable.

  • Para una columna nueva, se envía el evento de agregación de columna, pero el tipo del campo pasa a ser nullable.

Utilice este modo cuando necesite que el trabajo de ingesta sincronice los cambios de esquema de la manera más automática posible.

IGNORE

El trabajo de ingesta de datos de Flink CDC ignora todos los cambios de esquema. Los cambios de esquema del origen no se aplican a la tabla de destino.

Este modo es adecuado si la tabla de destino no admite cambios de esquema o si usted prefiere evitarlos y seguir recibiendo datos de las columnas sin modificaciones.

EVOLVE

El trabajo de ingesta de datos de Flink CDC aplica todos los cambios de esquema a la tabla de destino.

Si no se logra aplicar un cambio de esquema a la tabla de destino, el trabajo genera una excepción y desencadena un failover.

Utilice este modo cuando requiera que el trabajo de ingesta sincronice los cambios de esquema de la forma más estricta posible.

Importante

En este modo, si el destino no puede aplicar todos los eventos de cambio de esquema, el trabajo podría entrar en failover sin posibilidad de recuperarse automáticamente.

TRY_EVOLVE

El trabajo de ingesta de datos de Flink CDC intenta aplicar los cambios de esquema a la tabla de destino. Si esta no puede procesar un cambio, el trabajo no falla ni se reinicia. En su lugar, intenta gestionar el cambio mediante la transformación de los datos posteriores.

Utilice este modo cuando busque sincronizar los cambios de esquema con la mayor rigurosidad posible, pero conservando cierto grado de tolerancia a fallos.

Importante

En el modo TRY_EVOLVE, si no se aplica un cambio de esquema, los datos posteriores del origen podrían perder columnas o truncarse para ajustarse al esquema de la tabla de destino.

EXCEPTION

El trabajo de ingesta de datos de Flink CDC no permite ningún cambio de esquema. El trabajo genera una excepción al recibir un evento de cambio de esquema.

Utilice este modo cuando deba garantizar que no ocurra ningún cambio de esquema durante la ingesta y únicamente se sincronicen datos.

Control de cambios de esquema en el destino

En los escenarios de sincronización de datos, Flink CDC ofrece una gestión detallada de los cambios de esquema. Mediante reglas, usted controla qué tipos de cambios recibe el destino, lo cual previene pérdidas de datos o interrupciones del servicio provocadas por modificaciones inesperadas.

Para ello, configure el módulo sink con las opciones include.schema.changes y exclude.schema.changes.

Parámetro

Descripción

Obligatorio

Tipo de dato

Valor predeterminado

Observaciones

include.schema.changes

Los cambios de esquema que se permiten aplicar.

No

List<String>

Ninguna

De forma predeterminada, se admiten todos los cambios.

exclude.schema.changes

Los cambios de esquema que no se aplican.

No

List<String>

Ninguna

Tiene prioridad sobre include.schema.changes.

A continuación se muestran todos los tipos de eventos de cambio de esquema que se configuran:

Tipo de evento

Descripción

add.column

Agregar una columna

alter.column.type

Modificar el tipo de una columna

create.table

Crear una tabla

drop.column

Eliminar una columna

drop.table

Eliminar una tabla

rename.column

Renombrar una columna

truncate.table

Truncar una tabla

reorder.column

Modificar el orden de las columnas

Nota

Los cambios de esquema admiten coincidencias parciales. Por ejemplo, especificar drop equivale a indicar tanto drop.column como drop.table. Especificar table equivale a indicar create.table, truncate.table y drop.table.

Ejemplos

  • Ejemplo 1: establezca el comportamiento de cambio de esquema en EVOLVE para sincronizar los cambios de esquema del origen hacia el destino.

source:
  type: mysql
  name: MySQL Source
  hostname: ${mysql.hostname}
  port: ${mysql.port}
  username: ${mysql.username}
  password: ${mysql.password}
  tables: ${mysql.source.table}
  server-id: 7601-7604

sink:
  type: values
  name: Values Sink
  print.enabled: true
  sink.print.logger: true
  
pipeline:
  name: mysql to print job
  schema.change.behavior: EVOLVE
  • Ejemplo 2: aplique los eventos de creación de tabla y de columna desde la tabla de origen hacia el destino, e ignore los eventos de eliminación de columna.

source:
  type: mysql
  name: MySQL Source
  hostname: ${mysql.hostname}
  port: ${mysql.port}
  username: ${mysql.username}
  password: ${mysql.password}
  tables: ${mysql.source.table}
  server-id: 7601-7604

sink:
  type: values
  name: Values Sink
  print.enabled: true
  sink.print.logger: true
  include.schema.changes: [create.table, column] # Matches the CreateTable, AddColumn, AlterColumnType, RenameColumn, and DropColumn events
  exclude.schema.changes: [drop.column] # Excludes the DropColumn event
  
pipeline:
  name: mysql to print job
  schema.change.behavior: EVOLVE