YugabyteDB: Manejo de Cambios de Esquema
Obtenga información sobre el manejo de cambios de esquema en Oracle GoldenGate para YugabyteDB.
Requisitos para Manejar Cambios de Esquema
Para soportar cualquier cambio de esquema en los niveles de tabla y columna en las bases de datos de Yugabyte, se necesitan las siguientes configuraciones tanto en T-Server como en Listas de indicadores maestros:
cdcsdk_publication_list_refresh_interval_secs
-
Define el intervalo de refrescamiento para la lista de publicaciones.
-
Configure según el tiempo de espera adecuado para su entorno (valor por defecto: 900 segundos).
cdcsdk_enable_dynamic_table_support
-
Permite el soporte de tablas dinámicas en CDC.
-
Por defecto, se establece en
true. Confirme que sea explícitamente verdadero para T-Server y Master gflags.
Directrices para el manejo de cambios de esquema en Oracle GoldenGate para Yugabyte
Las siguientes directrices son importantes y se deben tener en cuenta al realizar operaciones DDL en la base de datos de Yugabyte:
-
Respetar siempre el intervalo
cdcsdk_publication_list_refresh_interval_secsantes de realizar operaciones DML. -
Pare Extract para garantizar cambios seguros en el esquema y evitar posibles problemas de captura de datos.
-
Después de reiniciar Extract, siempre valide que las columnas nuevas o restantes se capturen correctamente.
-
La base de datos de yugabytes no soporta el borrado de una tabla. Consulte el siguiente enlace para obtener más información:
Manejo de Cambios de Esquema a Nivel de Tabla
Obtenga información sobre el manejo de los cambios de esquema de nivel de tabla en Oracle GoldenGate para YugabyteDB.
Adición de una nueva tabla a un proceso de extracción existente
Este procedimiento depende de la configuración de publicación de Yugabyte. Existen dos tipos de publicaciones:
-
Publicación configurada para todas las tablas: en este tipo de publicación, se agregan nuevas tablas dinámicamente y no se requieren cambios en la publicación.
-
Publicación configurada para un juego de tablas: si se crea una nueva tabla, la publicación se debe modificar para incluir la nueva tabla.
Agregar una nueva tabla a un proceso de extracción existente
A continuación se muestran los pasos comunes para agregar una nueva tabla para un proceso de extracción existente: 1. Detenga el proceso de extracción antes de realizar cambios.
-
Actualice el archivo de parámetros de Extract para agregar la nueva tabla o tablas a la configuración de Extract.
-
Espere a que se defina el intervalo de refrescamiento en
cdcsdk_publication_list_refresh_interval_secs.Opcionalmente, permita una pequeña ventana de buffer para asegurarse de que la tabla se refresca por completo en el módulo CDC.
-
Reinicie el proceso de extracción una vez finalizado el intervalo de refrescamiento.
-
Realizar operaciones DML en la nueva tabla.
-
Compruebe que Extract captura los nuevos registros correctamente.
Adición de una nueva tabla a un proceso de extracción existente: ejemplo
Considere el escenario de este ejemplo:
Existe una tabla con dos publicaciones configuradas:
-
Publicación 1 (pub1): Cuadro específico
-
Publicación 2 (pub2): Todas las tablas
-
Dos extracciones (Ext1 mediante pub1, Ext2 mediante pub2) con listas de tablas estáticas
-
Las operaciones DML en la tabla estática las capturan ambas extracciones
El siguiente ejemplo proporciona los pasos para agregar una nueva tabla a un proceso de extracción existente en función de las consideraciones anteriores:
-
Detenga Ext1 y Ext2.
-
Cree nuevas tablas (table2, table3).
-
Actualice los archivos de parámetros de extracción para Ext1 y Ext2.
-
Modifique pub1 para incluir nuevas tablas. Pub2 no necesita cambios.
-
Reinicie Ext1 y Ext2.
-
Espere el intervalo de refrescamiento (
cdcsdk_publication_list_refresh_interval_secs). -
Realice operaciones DML en tablas nuevas y verifique que ambas extracciones las capturan correctamente.
Borrar una tabla de un proceso de extracción
Hay dos escenarios que se deben tener en cuenta al borrar una tabla:
La tabla forma parte de una publicación
Si la tabla se incluye en una publicación, no se permite borrarla. Si intenta borrar la tabla en este escenario, hace que el flujo o el espacio de replicación utilizados por Extract no se puedan utilizar y puede encontrar errores como:
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.
O bien
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.
Atención: si se producen dichos errores, la única resolución es anular el registro del Extract afectado y volver a registrarlo. Este paso es fundamental para restaurar operation.This normal también puede causar la pérdida de datos. Por lo tanto, se necesita precaución.
La tabla no forma parte de una publicación
Si la tabla no se incluye en ninguna publicación, su borrado no tiene ningún impacto en el flujo. No se requiere ninguna acción y la replicación continuará como de costumbre.
Manejo de Cambios de Esquema a Nivel de Columna
Obtenga información sobre el manejo de cambios de esquema a nivel de columna, como la adición y el borrado de columnas en Oracle GoldenGate para YugabyteDB.
Agregar una Columna
Para realizar una operación ALTER TABLE … ADD COLUMN en una tabla que forma parte de una publicación: 1. Pare el proceso Extract antes de empezar a agregar una columna a la tabla. Esto evita que Extract se interrumpa.
-
Agregue la columna de la tabla que se incluye en la publicación mediante el siguiente comando:
ALTER TABLE...ADD COLUMN -
Espere la duración especificada en
cdcsdk_publication_list_refresh_interval_secspara asegurarse de que el módulo CDC se refresca y reconoce la nueva columna. -
Ejecute cualquier operación DML (INSERTS, UPDATES o DELETES) en la nueva columna.
-
Reinicie el proceso de extracción y verifique que los cambios, incluidas las operaciones DML en la nueva columna, se capturan correctamente.
Borrar una Columna
Borrar una o varias columnas de una tabla que forma parte de una publicación: 1. Detenga el proceso de extracción. Aunque borrar una columna no suele provocar un fin anormal de Extract, se recomienda parar Extract antes de realizar cambios en el esquema.
-
Ejecute el siguiente comando en la tabla incluida en la publicación:
ALTER TABLE ... DROP COLUMN -
Espere la duración especificada en
cdcsdk_publication_list_refresh_interval_secspara asegurarse de que el módulo CDC esté actualizado. -
Ejecute cualquier operación DML (INSERT, UPDATE, DELETE), según sea necesario.
-
Reinicie Extract y confirme que las operaciones DML en las columnas restantes se siguen capturando correctamente.