Uso de la captura de datos de cambio - Amazon Relational Database Service

Uso de la captura de datos de cambio

Amazon RDS admite la captura de datos de cambios (CDC) para las instancias de base de datos que ejecutan Microsoft SQL Server. CDC captura los cambios que se realizando en los datos de las tablas. Almacena metadatos sobre cada cambio, a los que puede obtener acceso posteriormente. Para obtener más información sobre el funcionamiento de CDC, consulte Captura de datos de cambio en la documentación de Microsoft.

Antes de usar CDC con sus instancias de base de datos de Amazon RDS, habilítela en la base de datos ejecutando msdb.dbo.rds_cdc_enable_db. Debe tener privilegios de usuario maestro para habilitar CDC en la instancia de base de datos de Amazon RDS. Después de que se haya habilitado CDC, cualquier usuario que sea db_owner de esa base de datos puede habilitar o deshabilitar CDC en las tablas de esa base de datos.

importante

Durante las restauraciones, se deshabilitará CDC. Todos los metadatos relacionados se quitan automáticamente de la base de datos. Esto se aplica a las restauraciones de instantánea, restauraciones de un momento dado y restauraciones nativas de SQL Server desde S3. Después de llevar a cabo uno de estos tipos de restauraciones, puede volver a habilitar CDC y especificar de nuevo las tablas de las que se realizará un seguimiento.

Para habilitar CDC para una instancia de base de datos, ejecute el procedimiento almacenado msdb.dbo.rds_cdc_enable_db.

exec msdb.dbo.rds_cdc_enable_db 'database_name'

Para desactivar CDC para una instancia de base de datos, ejecute el procedimiento almacenado msdb.dbo.rds_cdc_disable_db.

exec msdb.dbo.rds_cdc_disable_db 'database_name'

Seguimiento de tablas con la captura de datos de cambios

Después de que CDC se habilite en la base de datos, puede comenzar a realizar el seguimiento de tablas específicas. Puede elegir las tablas de las que se efectuará el seguimiento ejecutando sys.sp_cdc_enable_table.

--Begin tracking a table exec sys.sp_cdc_enable_table @source_schema = N'source_schema' , @source_name = N'source_name' , @role_name = N'role_name' --The following parameters are optional: --, @capture_instance = 'capture_instance' --, @supports_net_changes = supports_net_changes --, @index_name = 'index_name' --, @captured_column_list = 'captured_column_list' --, @filegroup_name = 'filegroup_name' --, @allow_partition_switch = 'allow_partition_switch' ;

Para ver la configuración de CDC de sus tablas, ejecute sys.sp_cdc_help_change_data_capture.

--View CDC configuration exec sys.sp_cdc_help_change_data_capture --The following parameters are optional and must be used together. -- 'schema_name', 'table_name' ;

Para obtener más información sobre las tablas, las funciones y los procedimientos almacenados de CDC, consulte lo siguiente en la documentación de SQL Server:

Trabajos de captura de datos de cambio

Al habilitar CDC, SQL Server crea los trabajos de CDC. Los propietarios de base de datos (db_owner) pueden ver, crear, modificar y eliminar trabajos de CDC. Sin embargo, la cuenta del sistema de RDS es la propietaria de ellos. Por lo tanto, los trabajos no están visibles en las vistas nativas, en los procedimientos o en SQL Server Management Studio.

Para controlar el comportamiento de CDC en una base de datos, use procedimientos de SQL Server nativos, como sp_cdc_enable_table y sp_cdc_start_job. Para cambiar los parámetros de trabajo de CDC, como maxtrans y maxscans, puede usar sp_cdc_change_job..

Para obtener más información en relación con los trabajos de CDC, puede consultar las siguientes vistas de administración dinámicas:

  • sys.dm_cdc_errors

  • sys.dm_cdc_log_scan_sessions

  • sysjobs

  • sysjobhistory

Captura de datos de cambio para instancias Multi-AZ

Si utiliza CDC en una instancia Multi-AZ, asegúrese de que la configuración de trabajo de CDC del reflejo coincide con el del principal. Los trabajos de CDC se mapean a database_id. Si los ID de base de datos en el secundario son distintos del principal, los trabajos no se asociarán con la base de datos correcta. Para intentar evitar errores después de la conmutación por error, RDS borra y vuelve a crear los trabajos en el nuevo principal. Los trabajos que se han vuelto a crear usan los parámetros que el principal registró antes de la conmutación por error.

Aunque este proceso se ejecuta rápidamente, sigue siendo posible que los trabajos de CDC se ejecuten antes de que RDS pueda corregirlos. A continuación se indican tres formas de forzar a que los parámetros sean coherentes entre el principal y las réplicas secundarias:

  • Usar los mismos parámetros de trabajo para todas las bases de datos que hayan habilitado CDC.

  • Antes de cambiar la configuración de trabajo de CDC, convertir la instancia Multi-AZ a Single-AZ.

  • Transferir manualmente los parámetros siempre que se cambien en el principal.

Para ver y definir los parámetros de CDC que se utilizaron para volver a crear los trabajos de CDC después de una conmutación por error, use rds_show_configuration y rds_set_configuration.

En el siguiente ejemplo, se devuelve el valor establecido para cdc_capture_maxtrans. Para cualquier parámetro establecido en RDS_DEFAULT, RDS configura automáticamente el valor.

-- Show configuration for each parameter on either primary and secondary replicas. exec rdsadmin.dbo.rds_show_configuration 'cdc_capture_maxtrans';

Para establecer la configuración en el secundario, ejecute rdsadmin.dbo.rds_set_configuration. Este procedimiento establece los valores de los parámetros de todas las bases de datos en el servidor secundario. Esta configuración solo se usa después de una conmutación por error. En el siguiente ejemplo, se establece maxtrans de todos los trabajos de captura de CDC en 1000:

--To set values on secondary. These are used after failover. exec rdsadmin.dbo.rds_set_configuration 'cdc_capture_maxtrans', 1000;

Para establecer los parámetros de trabajo de CDC en la entidad principal, use sys.sp_cdc_change_jobs en su lugar.