Usar a captura de dados de alteração - Amazon Relational Database Service

Usar a captura de dados de alteração

O Amazon RDS comporta captura de dados de alteração (CDC) em instâncias de banco de dados que estejam executando o Microsoft SQL Server. A CDC captura alterações feitas nos dados de suas tabelas. Ela armazena metadados sobre cada alteração, que podem ser acessados posteriormente. Para obter mais informações sobre como a CDC funciona, consulte Captura de dados de alteração na documentação da Microsoft.

Para usar a CDC com suas instâncias de banco de dados do Amazon RDS, habilite-a no banco de dados executando msdb.dbo.rds_cdc_enable_db. É necessário ter privilégios de usuário mestre para ativar o CDC na instância de banco de dados do Amazon RDS. Após a habilitação da CDC, qualquer usuário que seja um db_owner desse banco de dados poderá habilitar ou desabilitar a CDC em tabelas desse banco de dados.

Importante

Durante restaurações, a CDC será desabilitada. Todos os metadados relacionados são removidos automaticamente do banco de dados. Isso se aplica a restaurações de snapshot, a restaurações pontuais e a restaurações nativas do SQL Server no S3. Após a execução desses tipos de restauração, você pode habilitar novamente a CDC e especificar tabelas novamente para acompanhamento.

Para habilitar o CDC para uma instância de banco de dados, execute o procedimento msdb.dbo.rds_cdc_enable_db armazenado.

exec msdb.dbo.rds_cdc_enable_db 'database_name'

Para desabilitar o CDC para uma instância de banco de dados, execute o procedimento msdb.dbo.rds_cdc_disable_db armazenado.

exec msdb.dbo.rds_cdc_disable_db 'database_name'

Acompanhamento de tabelas com a Captura de dados de alteração

Após a CDC ser habilitada no banco de dados, você pode começar a acompanhar tabelas específicas. Você pode escolher as tabelas a serem acompanhadas executando 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 visualizar a configuração de CDC para suas tabelas, execute 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 obter mais informações sobre tabelas, funções e procedimentos armazenados de CDC na documentação do SQL Server, consulte o seguinte:

Trabalhos de captura de dados de alteração

Quando você habilita a CDC, o SQL Server cria os trabalhos de CDC. Os proprietários de bancos de dados (db_owner) podem visualizar, criar, modificar e excluir trabalhos de CDC. Contudo, os trabalhos são de propriedade da conta do sistema do RDS. Portanto, os trabalhos não estão visíveis em visualizações, procedimentos nativos ou no SQL Server Management Studio.

Para controlar o comportamento de CDC em um banco de dados, use procedimentos nativos do SQL Server, como sp_cdc_enable_table e sp_cdc_start_job . Para alterar os parâmetros de trabalhos de CDC, como maxtrans e maxscans, use sp_cdc_change_job..

Para obter mais informações sobre os trabalhos de CDC, você pode consultar as seguintes visualizações de gerenciamento dinâmico:

  • sys.dm_cdc_errors

  • sys.dm_cdc_log_scan_sessions

  • sysjobs

  • sysjobhistory

Change Data Capture para instâncias multi-AZ

Se você usar a CDC em uma instância multi-AZ, verifique se a configuração do trabalho de CDC do espelho corresponde a do principal. Os trabalhos de CDC são mapeados para o database_id. Se os IDs de bancos de dados no secundário forem diferentes do principal, os trabalhos não serão associados ao banco de dados correto. Para tentar evitar erros após um failover, o RDS descarta e recria os trabalhos no novo principal. Os trabalhos recriados usam os parâmetros que o principal registrou antes do failover.

Embora esse processo seja executado rapidamente, ainda é possível que os trabalhos de CDC possam ser executados antes que o RDS possa corrigi-los. Estas são três maneiras de forçar os parâmetros para que sejam consistentes entre as réplicas primária e secundária:

  • Use os mesmos parâmetros de trabalho para todos os bancos de dados que têm a CDC habilitada.

  • Antes de alterar a configuração do trabalho de CDC, converta a instância multi-AZ para single-AZ.

  • Transfira os parâmetros manualmente sempre que alterá-los no principal.

Para visualizar e definir os parâmetros de CDC usados para recriar os trabalhos de CDC após um failover, use rds_show_configuration e rds_set_configuration.

O exemplo a seguir retorna o valor definido para cdc_capture_maxtrans. Para qualquer parâmetro definido como RDS_DEFAULT, o RDS configura o valor automaticamente.

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

Para definir a configuração na secundária, execute rdsadmin.dbo.rds_set_configuration. Esse procedimento define os valores dos parâmetros para todos os bancos de dados no servidor secundário. Essas configurações são usadas somente após um failover. Os exemplo a seguir define o maxtrans de todos os trabalhos de captura de CDC como 1000:

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

Para definir os parâmetros de trabalhos de CDC no principal, use sys.sp_cdc_change_job.