Uso di Change Data Capture - Amazon Relational Database Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Uso di Change Data Capture

Amazon RDS supporta Change Data Capture (CDC) per le istanze di database che eseguono Microsoft SQL Server. CDC "cattura" le modifiche effettuate ai dati delle tue tabelle. Memorizza i metadati di ogni modifica, ai quali potrai accedere successivamente. Per ulteriori informazioni sul funzionamento di CDC, consulta Change Data Capture nella documentazione di Microsoft.

Prima di usare CDC con le istanze database Amazon RDS, abilitalo nel database eseguendo msdb.dbo.rds_cdc_enable_db. Devi avere i privilegi dell'utente master per abilitare CDC nell'istanza database Amazon RDS. Dopo l'abilitazione di CDC, qualsiasi utente che sia db_owner del database interessato può abilitare o disabilitare CDC sulle tabelle di tale database.

Importante

Durante i ripristini, CDC verrà disabilitata. Tutti i metadati correlati saranno rimossi automaticamente dal database. Ciò vale per il ripristino di snapshot e point-in-time e per il ripristino nativo di SQL Server da parte di S3. Dopo l'esecuzione di uno di questi tipi di ripristino, puoi riabilitare CDC e specificare di nuovo le tabelle da monitorare.

Per abilitare CDC per un'istanza DB, esegui la procedura archiviata msdb.dbo.rds_cdc_enable_db.

exec msdb.dbo.rds_cdc_enable_db 'database_name'

Per disabilitare CDC per un'istanza DB, esegui la procedura archiviata msdb.dbo.rds_cdc_disable_db.

exec msdb.dbo.rds_cdc_disable_db 'database_name'

Monitoraggio di tabelle con Change Data Capture

Dopo l'abilitazione di CDC sul database, puoi iniziare a monitorare specifiche tabelle. Puoi scegliere le tabelle da monitorare eseguendo 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' ;

Per visualizzare la configurazione CDC per le tue tabelle, esegui 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' ;

Per ulteriori informazioni sulle tabelle, funzioni e procedure memorizzate di CDC riportate nella documentazione di SQL Server, consulta le sezioni seguenti:

Processi di Change Data Capture

Quando abiliti CDC, SQL Server crea i relativi processi. I proprietari del database (db_owner) possono visualizzare, creare, modificare ed eliminare i processi di CDC. Tuttavia, l'account di sistema di RDS è il proprietario di tali processi. Pertanto, i processi non sono visibili per le viste e le procedure native o da SQL Server Management Studio.

Per controllare il comportamento di CDC in un database, utilizza procedure SQL Server native come sp_cdc_enable_table e sp_cdc_start_job . Per modificare i parametri di un'attività di CDC, ad esempio maxtrans e maxscans, puoi utilizzare sp_cdc_change_jobs. .

Per ulteriori informazioni sui processi di CDC, puoi interrogare le seguenti viste a gestione dinamica:

  • sys.dm_cdc_errors

  • sys.dm_cdc_log_scan_sessions

  • sysjobs

  • sysjobhistory

Change Data Capture per istanze Multi-AZ

Se utilizzi CDC su un'istanza Multi-AZ, assicurati che la configurazione del processo di CDC del server mirror corrisponda a quella del server principale. I processi di CDC sono mappati in database_id. Se gli ID database sul secondario sono diversi da quelli del principale, i processi non verranno associati al database corretto. Per prevenire gli errori dopo un failover, RDS elimina e ricrea i processi sul nuovo server principale. I processi così ricreati utilizzano i parametri registrati dal server principale prima del failover.

Anche se questa procedura si svolge rapidamente, può sempre accadere che i processi di CDC vengano eseguiti prima che RDS possa correggerli. Di seguito sono descritti tre modi per forzare i parametri affinché siano coerenti tra le repliche principali e secondarie:

  • Usa gli stessi parametri di processo per tutti i database con CDC abilitata.

  • Prima di modificare la configurazione di un processo di CDC, converti l'istanza Multi-AZ in Single-AZ.

  • Trasferisci i parametri manualmente ogni volta che li modifichi sul server principale.

Per visualizzare e definire i parametri CDC utilizzati per ricreare i processi di CDC dopo un failover, utilizza rds_show_configuration e rds_set_configuration.

L'esempio seguente restituisce il valore impostato per cdc_capture_maxtrans. RDS configura automaticamente il valore di qualsiasi parametro impostato su RDS_DEFAULT.

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

Per impostare la configurazione sul secondario, eseguire rdsadmin.dbo.rds_set_configuration. Questa procedura imposta i valori del parametro per tutti i database sul server secondario. Queste impostazioni vengono utilizzate solo dopo un failover. Nell'esempio seguente, maxtrans viene impostato su 1000 per tutti i processi di acquisizione di CDC:

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

Per impostare i parametri di un'attività di CDC sul server principale, utilizza sys.sp_cdc_change_job.