변경 데이터 캡처 사용 - Amazon Relational Database Service

변경 데이터 캡처 사용

Amazon RDS는 Microsoft SQL Server를 실행하는 DB 인스턴스에 대해 CDC(변경 데이터 캡처)를 지원합니다. 테이블의 데이터에 대한 CDC 캡처 변경입니다. 각 변경 사항에 대한 메타데이터를 저장하고, 이후에 액세스할 수 있습니다. CDC 작동 방식에 대한 자세한 내용은 Microsoft 설명서의 변경 데이터 캡처를 참조하세요.

Amazon RDS DB 인스턴스에 CDC를 사용하기 전에 msdb.dbo.rds_cdc_enable_db를 실행하여 데이터베이스에서 이를 활성화합니다. Amazon RDS DB 인스턴스에서 CDC를 활성화하려면 마스터 사용자 권한이 있어야 합니다. CDC가 활성화된 이후 데이터베이스의 db_owner인 모든 사용자는 데이터베이스의 테이블에서 CDC를 활성화 또는 비활성화할 수 있습니다.

중요

복원 도중 CDC가 비활성화됩니다. 모든 관련 메타데이터가 데이터베이스에서 자동으로 제거됩니다. 이는 스냅샷 복원, 특정 시점으로 복원 및 S3로부터의 SQL Server 기본 복원에 적용됩니다. 이러한 유형의 복원 중 하나를 수행한 이후 CDC를 다시 활성화하고 추적할 테이블을 다시 지정할 수 있습니다.

DB 인스턴스에 대해 CDC를 활성화하려면 msdb.dbo.rds_cdc_enable_db 저장 프로시저를 실행합니다.

exec msdb.dbo.rds_cdc_enable_db 'database_name'

DB 인스턴스에 대해 CDC를 비활성화하려면 msdb.dbo.rds_cdc_disable_db 저장 프로시저를 실행합니다.

exec msdb.dbo.rds_cdc_disable_db 'database_name'

변경 데이터 캡처로 테이블 추적

데이터베이스에서 CDC가 활성화된 이후 특정 테이블 추적을 시작할 수 있습니다. 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' ;

테이블에 대한 CDC 구성을 보려면 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' ;

SQL Server 설명서의 CDC 테이블, 함수 및 저장된 절차에 대한 자세한 내용은 다음을 참조하세요.

변경 데이터 캡처 작업

CDC를 활성화할 때 SQL Server가 CDC 작업을 생성합니다. 데이터베이스 소유자(db_owner)는 CDC 작업의 보기, 생성, 수정 및 삭제가 가능합니다. 하지만 RDS 시스템 계정은 이들을 소유합니다. 따라서 기본 보기, 절차 또는 SQL Server Management Studio에서 작업이 보이지 않습니다.

데이터베이스의 CDC 동작을 제어하려면 sp_cdc_enable_tablesp_cdc_start_job과 같은 기본 SQL Server 절차를 사용합니다. maxtransmaxscans와 같은 CDC 작업 파라미터를 변경하려면 sp_cdc_change_job을 사용할 수 있습니다.

CDC 작업에 관한 추가 정보를 얻으려면 다음 동적 관리 보기를 쿼리할 수 있습니다.

  • sys.dm_cdc_errors

  • sys.dm_cdc_log_scan_sessions

  • sysjobs

  • sysjobhistory

다중 AZ 인스턴스에 대한 변경 데이터 캡처

다중 AZ 인스턴스에서 CDC를 사용하는 경우 미러의 CDC 작업 구성이 보안 주체에 있는 것과 일치해야 합니다. CDC 작업은 database_id로 매핑됩니다. 보조의 데이터베이스 ID가 보안 주체의 ID와 다른 경우 작업이 올바른 데이터베이스와 연결되지 않습니다. 장애 조치 이후 오류를 방지하기 위해 RDS는 작업을 취소하고 새 보안 주체에 작업을 다시 생성합니다. 다시 생성된 작업은 장애 조치 이전에 보안 주체가 기록한 파라미터를 사용합니다.

이 프로세스가 빠르게 실행되기는 하지만 CDC 작업은 RDS가 이를 수정하기 전에 실행될 수 있습니다. 기본 복제본과 보조 복제본 사이의 파라미터를 강제로 일관되게 하는 3가지 방법이 있습니다.

  • CDC를 활성화한 모든 데이터베이스에 대해 동일한 작업 파라미터를 사용합니다.

  • CDC 작업 구성을 변경하기 전에 다중 AZ 인스턴스를 단일 AZ로 변환합니다.

  • 보안 주체에서 파라미터를 변경할 때마다 수동으로 전송합니다.

장애 조치 이후 CDC 작업을 다시 생성하는 데 사용되는 CDC 파라미터를 보고 정의하려면 rds_show_configurationrds_set_configuration을 사용합니다.

다음은 cdc_capture_maxtrans의 값을 반환하는 예입니다. RDS_DEFAULT로 설정된 모든 파라미터의 경우 RDS가 자동으로 값을 구성합니다.

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

보조에서 구성을 설정하려면 rdsadmin.dbo.rds_set_configuration을 실행합니다. 이 절차는 부 서버의 모든 데이터베이스에 대한 파라미터 값을 설정합니다. 이러한 설정은 장애 조치 이후에만 사용됩니다. 다음 예제는 모든 CDC 캡처 작업에 대한 maxtrans1000으로 설정합니다.

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

보안 주체에서 CDC 작업 파라미터를 설정하려면 sys.sp_cdc_change_job을 대신 사용합니다.