Utilisation de la capture de données modifiées - Amazon Relational Database Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisation de la capture de données modifiées

Amazon RDS prend en charge la capture de données modifiées (CDC) pour vos instances de base de données s'exécutant sur Microsoft SQL Server. CDC capture les modifications apportées aux données de vos tables. CDC stocke les métadonnées relatives à chaque modification et vous pouvez y accéder ultérieurement. Pour plus d'informations sur le fonctionnement de CDC, consultez Capture de données modifiées dans la documentation Microsoft.

Pour utiliser la fonction CDC avec vos instances de base de données Amazon RDS, vous devez tout d'abord l'activer au niveau de la base de données en exécutant msdb.dbo.rds_cdc_enable_db. Vous devez avoir des droits d'utilisateur principal pour pouvoir activer CDC dans l'instance de base de données Amazon RDS. Une fois la fonction CDC activée, tout utilisateur db_owner de cette base de données peut activer ou désactiver CDC sur les tables de cette base de données.

Important

Pendant les restaurations, la fonction CDC est désactivée. L'ensemble des métadonnées associées est automatiquement supprimé de la base de données. Cela s'applique aux restaurations d'instantané, aux restaurations à un instant dans le passé et aux restaurations SQL Server Native depuis S3. Après avoir exécuté l'un de ces types de restaurations, vous pouvez réactiver CDC et respécifier les tables à suivre.

Pour activer CDC pour une instance de base de données, exécutez la procédure stockée msdb.dbo.rds_cdc_enable_db.

exec msdb.dbo.rds_cdc_enable_db 'database_name'

Pour désactiver le CDC pour une instance de base de données, exécutez la procédure stockée msdb.dbo.rds_cdc_disable_db.

exec msdb.dbo.rds_cdc_disable_db 'database_name'

Suivi des tables avec CDC

Une fois que CDC est activé sur la base de données, vous pouvez démarrer le suivi de tables spécifiques. Vous pouvez choisir les tableaux à suivre en exécutant 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' ;

Pour afficher la configuration CDC de vos tableaux, exécutez 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' ;

Pour plus d'informations sur les tables, fonctions et procédures stockées CDC dans la documentation SQL Server, consultez les rubriques suivantes :

Tâches CDC

Quand vous activez CDC, SQL Server crée les tâches CDC. Les propriétaires de base de données (db_owner) peuvent afficher, créer, modifier et supprimer les tâches CDC. Cependant, le compte système RDS en est propriétaire. Par conséquent, les tâches ne sont pas visibles des vues natives, des procédures ou de SQL Server Management Studio.

Pour contrôler le comportement de CDC dans une base de données, utilisez les procédures SQL Server natives telles que sp_cdc_enable_table et sp_cdc_start_job . Pour modifier les paramètres des tâches CDC, comme maxtrans et maxscans, vous pouvez utiliser sp_cdc_change_job..

Pour obtenir plus d'informations sur les tâches CDC, vous pouvez interroger les vues de gestion dynamiques suivantes :

  • sys.dm_cdc_errors

  • sys.dm_cdc_log_scan_sessions

  • sysjobs

  • sysjobhistory

Capture de données modifiées (CDC) pour les instances multi-AZ

Si vous utilisez CDC sur une instance multi-AZ, assurez-vous que la configuration de la tâche CDC du miroir correspond à celle du mandataire. Les tâches CDC sont mappées au database_id. Si les ID de base de données du réplica secondaire sont différents de ceux du mandataire, les tâches ne seront pas associées à la base de données appropriée. Pour éviter toute erreur après le basculement, RDS supprimer et recrée les tâches sur le nouveau mandataire. Les tâches recréées utilisent les paramètres que le mandataire a enregistrés avant le basculement.

Même si ce processus s'exécute rapidement, il est toujours possible que les tâches CDC puissent s'exécuter avant que RDS puisse les corriger. Voici trois moyens de contraindre les paramètres à être cohérents entre les réplicas principaux et secondaires :

  • Utilisez les mêmes paramètres de tâche pour toutes les bases de données pour lesquelles CDC est activé.

  • Avant de modifier la configuration des tâches CDC, convertissez l'instance multi-AZ en mono-AZ.

  • Transférez manuellement les paramètres chaque fois que vous les modifiez sur le principal.

Pour afficher et définir les paramètres CDC utilisés pour recréer les tâches CDC après un basculement, utilisez rds_show_configuration et rds_set_configuration.

L'exemple suivant renvoie la valeur définie pour cdc_capture_maxtrans. Pour tout paramètre défini sur RDS_DEFAULT, RDS configure automatiquement la valeur.

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

Pour définir la configuration sur le réplica secondaire, exécutez rdsadmin.dbo.rds_set_configuration. Cette procédure définit les valeurs de paramètre pour toutes les bases de données du serveur secondaire. Ces paramètres ne sont utilisés qu'après un basculement. L'exemple suivant définit le maxtrans de toutes les tâches de capture CDC sur 1000 :

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

Pour définir les paramètres de tâche CDC sur le principal, utilisez plutôt sys.sp_cdc_change_job.