Tous les produits
Search
Centre de documentation

Realtime Compute for Apache Flink:Flink CDC schema evolution configurations

Dernière mise à jour :Oct 10, 2026

Cette rubrique décrit les configurations d'évolution du schéma pour les tâches d'ingestion de données Flink CDC.

Configurations de l'évolution du schéma

Les tâches d'ingestion de données Flink CDC synchronisent les modifications de schéma depuis la source vers la table de destination, telles que la création d'une table, l'ajout d'une colonne, le renommage d'une colonne, la modification du type d'une colonne, la suppression d'une colonne et la suppression d'une table.

La table de destination peut ne pas prendre en charge toutes les modifications de schéma. Ajoutez l'option schema.change.behavior au module pipeline pour contrôler la manière dont la table de destination gère une modification de schéma.

pipeline:
  schema.change.behavior: EVOLVE

Le framework prend uniquement en charge la synchronisation des types de modification de schéma suivants. Les modifications de schéma non répertoriées peuvent provoquer des exceptions dans la tâche et nécessiter un redémarrage sans état pour récupérer.

  • Créer une table (CREATE TABLE ...)

  • Ajouter une colonne (ALTER TABLE ... ADD COLUMN ...)

  • Modifier le type de colonne (ALTER TABLE ... MODIFY COLUMN ...)

  • Supprimer une colonne (ALTER TABLE ... DROP COLUMN ...)

  • Renommer une colonne (ALTER TABLE ... RENAME COLUMN ...)

  • Vider une table (TRUNCATE TABLE ...)

  • Supprimer une table (DROP TABLE ...)

  • Modifier l'ordre des colonnes (MODIFY COLUMN ... FIRST/AFTER ou CHANGE COLUMN ... FIRST/AFTER)

Remarque

L'événement de modification de l'ordre des colonnes est reconnu et traité à partir de la version VVR 11.9.

Comportement de l'évolution du schéma

Mode

Description

LENIENT (par défaut)

La tâche d'ingestion de données Flink CDC convertit avec souplesse les modifications de schéma et les envoie à la table de destination. La conversion suit ces règles :

  • Les modifications de suppression de table, de vidage de table et de réorganisation des colonnes ne sont pas envoyées.

  • Pour un renommage de colonne, un événement de modification de type de colonne et un événement d'ajout de colonne sont envoyés à la place. La colonne d'origine n'est pas supprimée. Son type devient nullable et une nouvelle colonne portant le nouveau nom et un type de données nullable est ajoutée.

  • Pour une colonne supprimée, un événement de modification de type de colonne est envoyé à la place et le type de champ devient nullable.

  • Pour une nouvelle colonne, l'événement d'ajout de colonne est toujours envoyé, mais le type de champ devient nullable.

Utilisez ce mode lorsque vous souhaitez que la tâche d'ingestion de données synchronise les modifications de schéma aussi automatiquement que possible.

IGNORE

La tâche d'ingestion de données Flink CDC ignore toutes les modifications de schéma. Les modifications de schéma en amont ne sont pas appliquées à la table de destination.

Utilisez ce mode lorsque votre table de destination ne prend pas en charge les modifications de schéma, ou si vous ne souhaitez pas que des modifications de schéma se produisent tout en continuant à recevoir des données des colonnes inchangées.

EVOLVE

La tâche d'ingestion de données Flink CDC applique toutes les modifications de schéma à la table de destination.

Si une modification de schéma ne peut pas être appliquée à la table de destination, la tâche génère une exception et déclenche un basculement.

Utilisez ce mode lorsque vous souhaitez que la tâche d'ingestion de données synchronise les modifications de schéma de manière aussi stricte que possible.

Important

Dans ce mode, si la destination ne peut pas appliquer tous les événements de modification de schéma, la tâche peut subir un basculement et ne pas pouvoir se rétablir automatiquement.

TRY_EVOLVE

La tâche d'ingestion de données Flink CDC tente d'appliquer les modifications de schéma à la table de destination. Si la table de destination ne peut pas traiter une modification de schéma, la tâche n'échoue pas et ne redémarre pas. Elle tente plutôt de gérer la modification en transformant les données suivantes.

Utilisez ce mode lorsque vous souhaitez que la tâche d'ingestion de données synchronise les modifications de schéma de manière aussi stricte que possible tout en conservant un certain degré de tolérance aux pannes.

Important

En mode TRY_EVOLVE, si une modification de schéma ne peut pas être appliquée, les données suivantes provenant de la source en amont peuvent perdre des colonnes ou être tronquées pour s'adapter au schéma de la table de destination.

EXCEPTION

La tâche d'ingestion de données Flink CDC n'autorise aucune modification de schéma. La tâche génère une exception lorsqu'elle reçoit un événement de modification de schéma.

Utilisez ce mode lorsque vous devez vous assurer qu'aucune modification de schéma ne se produit dans la tâche d'ingestion de données et que seules les données sont synchronisées.

Contrôle des modifications de schéma au niveau de la destination

Dans les scénarios de synchronisation de données, Flink CDC offre une gestion fine des modifications de schéma. Utilisez des règles pour contrôler les types de modifications de schéma que la destination reçoit, ce qui permet d'éviter la perte de données ou l'interruption de service causée par des modifications inattendues.

Pour ce faire, configurez le module sink avec les options include.schema.changes et exclude.schema.changes.

Paramètre

Description

Obligatoire

Type de données

Valeur par défaut

Remarques

include.schema.changes

Les modifications de schéma qui peuvent être appliquées.

Non

List<String>

Aucune

Toutes les modifications sont prises en charge par défaut.

exclude.schema.changes

Les modifications de schéma qui ne peuvent pas être appliquées.

Non

List<String>

Aucune

Prioritaire sur include.schema.changes.

Le tableau suivant répertorie tous les types d'événements de modification de schéma configurables :

Type d'événement

Description

add.column

Ajouter une colonne

alter.column.type

Modifier le type d'une colonne

create.table

Créer une table

drop.column

Supprimer une colonne

drop.table

Supprimer une table

rename.column

Renommer une colonne

truncate.table

Vider une table

reorder.column

Modifier l'ordre des colonnes

Remarque

Les modifications de schéma prennent en charge la correspondance partielle. Par exemple, spécifier drop équivaut à spécifier à la fois drop.column et drop.table. Spécifier table équivaut à spécifier create.table, truncate.table et drop.table.

Exemples

  • Exemple 1 : Définissez le comportement d'évolution du schéma sur EVOLVE pour synchroniser les modifications de schéma en amont vers la destination.

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
  • Exemple 2 : Appliquez les événements de création de table et de colonne de la table en amont à la destination, et ignorez les événements de suppression de colonne.

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