Amazon Relational Database Service
사용 설명서 (API 버전 2014-10-31)

변경 데이터 캡처 사용

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

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

중요

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

--Enable CDC for RDS DB Instance exec msdb.dbo.rds_cdc_enable_db '<database name>'

CDC를 비활성화하려면 msdb.dbo.rds_cdc_disable_db를 실행합니다.

--Disable CDC for RDS DB Instance 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_jobs.를 사용할 수 있습니다.

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 principal or mirror. exec rdsadmin.dbo.rds_show_configuration 'cdc_capture_maxtrans'

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

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

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

이 페이지에서: