YugabyteDB : Gérer les modifications de schéma
Découvrez comment gérer les modifications de schéma dans Oracle GoldenGate pour YugabyteDB.
Prérequis pour la gestion des modifications de schéma
Pour prendre en charge les modifications de schéma aux niveaux table et colonne dans les bases de données Yugabyte, les configurations suivantes sont requises dans T-Server et les listes gflag principales :
cdcsdk_publication_list_refresh_interval_secs
-
Définit l'intervalle d'actualisation de la liste de publications.
-
Configurez-le en fonction du temps d'attente approprié à votre environnement (par défaut : 900 secondes).
cdcsdk_enable_dynamic_table_support
-
Active la prise en charge des tables dynamiques dans CDC.
-
Par défaut, ce paramètre est défini sur
true. Confirmez que cela est explicitement vrai pour T-Server et Master gflags.
Instructions relatives à la gestion des modifications de schéma dans Oracle GoldenGate pour Yugabyte
Les instructions suivantes sont importantes et doivent être prises en compte lors de l'exécution d'opérations LDD sur la base de données Yugabyte :
-
Respectez toujours l'intervalle
cdcsdk_publication_list_refresh_interval_secsavant d'effectuer des opérations LMD. -
Arrêtez le processus Extract pour garantir la sécurité des modifications de schéma et éviter les problèmes potentiels de capture des données.
-
Après le redémarrage de l'extraction, vérifiez toujours que les colonnes nouvelles ou restantes sont capturées correctement.
-
La base de données Yugabyte ne prend pas en charge la suppression d'une table. Pour en savoir plus, consultez le lien suivant :
Gérer les modifications de schéma au niveau de la table
Découvrez comment gérer les modifications de schéma au niveau de la table dans Oracle GoldenGate pour YugabyteDB.
Ajouter une nouvelle table à un processus d'extraction existant
Cette procédure dépend de la configuration de publication de Yugabyte. Il existe deux types de publications :
-
Publication configurée pour toutes les tables : Dans ce type de publication, les nouvelles tables sont ajoutées dynamiquement et aucune modification n'est requise pour la publication.
-
Publication configurée pour un ensemble de tables : si une nouvelle table est créée, la publication doit être modifiée pour inclure la nouvelle table.
Ajouter une nouvelle table à un processus Extract existant
Les étapes courantes permettant d'ajouter une nouvelle table pour un processus Extract existant sont les suivantes : 1. Arrêtez le processus d'extraction avant d'apporter des modifications.
-
Mettez à jour le fichier de paramètres Extract pour ajouter la ou les nouvelles tables à la configuration Extract.
-
Attendez l'intervalle d'actualisation défini dans
cdcsdk_publication_list_refresh_interval_secs.Vous pouvez éventuellement autoriser une petite fenêtre de tampon pour vous assurer que la table est entièrement actualisée dans le module CDC.
-
Redémarrez le traitement Extract une fois l'intervalle d'actualisation terminé.
-
Effectuez des opérations LMD sur la nouvelle table.
-
Vérifiez que l'extraction capture les nouveaux enregistrements avec succès.
Ajouter une nouvelle table à un traitement d'extraction existant - Exemple
Prenons le scénario de cet exemple :
Il existe une table avec deux publications configurées :
-
Publication 1 (pub1) : Tableau spécifique
-
Publication 2 (pub2) : Tous les tableaux
-
Deux extractions (Ext1 à l'aide de pub1, Ext2 à l'aide de pub2) avec listes de tables statiques
-
Les opérations LMD sur la table statique sont capturées par les deux extractions.
L'exemple suivant présente les étapes à suivre pour ajouter une nouvelle table à un processus Extract existant en fonction des considérations précédentes :
-
Arrêtez Ext1 et Ext2.
-
Créez de nouvelles tables (table2, table3).
-
Mettez à jour les fichiers de paramètres d'extraction pour Ext1 et Ext2.
-
Modifiez pub1 pour inclure de nouvelles tables. Pub2 ne requiert aucune modification.
-
Redémarrez Ext1 et Ext2.
-
Attendez l'intervalle d'actualisation (
cdcsdk_publication_list_refresh_interval_secs). -
Effectuez des opérations LMD sur les nouvelles tables et vérifiez que les deux extractions les capturent.
Supprimer une table d'un processus d'extraction
Deux scénarios sont à prendre en compte lors de la suppression d'une table :
La table fait partie d'une publication
Si la table est incluse dans une publication, la suppression de la table n'est pas autorisée. Si vous tentez de supprimer la table dans ce scénario, le flux ou l'emplacement de réplication utilisé par le processus Extract devient inutilisable et vous risquez de rencontrer des erreurs telles que :
2026-03-04 11:21:44 ERROR OGG-30611 Yugabyte has closed the streaming client and has caused the Extract to abend.
Error: ERROR: XX000: LookupByIdRpc(tablet: d092b524eff34d21b45c78ead108122a, num_attempts: 1) failed: Tablet deleted: Table deleted at 2026-03-04 11:21:44 UTC.
CONTEXT: Catalog Version Mismatch: A DDL occurred while processing this query. Try again.LOCATION: YBPrepareCacheRefreshIfNeeded, postgres.c:4160.
Ou
2026-03-04 11:22:51 ERROR OGG-30605 Dropping any table used by the Extract will cause the Extract to abend and disconnect the YDB streaming client.
Error: ERROR: XX000: VirtualWAL initialisation failed for stream_id: afdaa2e91ebc288be74724e8fb780342 & session_id: 51: Table 000033cf00003000800000000000400f not found under stream
CONTEXT: Catalog Version Mismatch: A DDL occurred while processing this query. Try again.LOCATION: YBPrepareCacheRefreshIfNeeded, postgres.c:4160.
Attention : si de telles erreurs se produisent, la seule solution consiste à annuler l'enregistrement de l'extraction concernée et à l'enregistrer à nouveau. Cette étape est essentielle pour restaurer une valeur operation.This normale. Elle peut également entraîner une perte de données. Il faut donc faire preuve de prudence.
La table ne fait pas partie d'une publication
Si la table n'est incluse dans aucune publication, sa suppression n'a aucun impact sur le flux. Aucune action n'est requise et la réplication se poursuivra comme d'habitude.
Gérer les modifications de schéma au niveau colonne
Découvrez comment gérer les modifications de schéma au niveau des colonnes, telles que l'ajout et la suppression de colonnes dans Oracle GoldenGate pour YugabyteDB.
Ajouter une clé
Pour effectuer une opération ALTER TABLE … ADD COLUMN sur une TABLE qui fait partie d'une publication : 1. Arrêtez le processus Extract avant de commencer à ajouter une colonne à la table. Cela empêche l'abandon du processus Extract.
-
Ajoutez la colonne du tableau qui est incluse dans la publication à l'aide de la commande suivante :
ALTER TABLE...ADD COLUMN -
Attendez la durée indiquée dans
cdcsdk_publication_list_refresh_interval_secspour vous assurer que le module CDC est actualisé et reconnaît la nouvelle colonne. -
Exécutez les opérations LMD (INSERTS, UPDATES ou DELETES) sur la nouvelle colonne.
-
Redémarrez le processus Extract et vérifiez que les modifications, y compris les opérations LMD sur la nouvelle colonne, ont été capturées.
Déposer une ligne
Pour supprimer une ou plusieurs colonnes d'une table faisant partie d'une publication : 1. Arrêtez le processus Extract. Bien que la suppression d'une colonne n'entraîne généralement pas l'abandon du processus Extract, il est toujours recommandé d'arrêter ce processus avant d'apporter des modifications au schéma.
-
Exécutez la commande suivante sur la table incluse dans la publication :
ALTER TABLE ... DROP COLUMN -
Attendez la durée indiquée dans
cdcsdk_publication_list_refresh_interval_secspour vous assurer que le module CDC est mis à jour. -
Exécutez toutes les opérations LMD (INSERT, UPDATE, DELETE), le cas échéant.
-
Redémarrez le processus Extract et vérifiez que les opérations LMD sur les colonnes restantes continuent d'être capturées correctement.