이 페이지에서는 Cloud Data Fusion 복제 작업에서 Microsoft SQL Server 및 MySQL 데이터베이스 스냅샷의 트랜잭션 격리를 사용 설정하는 방법을 설명합니다.
데이터베이스에 복제 작업을 설정하면 해당 작업이 소스 테이블의 초기 스냅샷을 만듭니다. 데이터 일관성을 유지하려면 이러한 테이블에 잠금을 설정합니다.
초기 스냅샷 후에는 소스의 증분 변경사항이 캡처되고 진행 중인 복제 프로세스의 일부로 BigQuery 대상에 적용됩니다.
SQL Server
복제 작업은 SQL Server 데이터베이스의 소스 테이블 변경사항을 캡처하기 위해 Debezium 커넥터를 사용합니다. snapshotting
단계에서 Debezium은 구성된 snapshot.isolation.mode
에 따라 잠금을 획득합니다.
다음 표에서는 복제 작업에 지원되는 격리 모드를 비교합니다.
격리 모드 | 획득한 잠금 | 데이터 일관성 |
---|---|---|
read_uncommitted |
없음 | 아니요. |
read_committed |
한 번에 여러 행의 공유 잠금 | 부분. 추가된 레코드는 초기 스냅샷에 한 번, 스트리밍 단계에서 한 번, 총 두 번 나타날 수 있습니다. |
repeatable_read (기본값) |
모든 행의 공유 잠금 | 부분. 추가된 레코드는 초기 스냅샷에 한 번, 스트리밍 단계에서 한 번, 총 두 번 나타날 수 있습니다. |
snapshot |
없음 | 전체 규모 |
exclusive |
모든 테이블의 배타적 잠금 | 전체 규모 |
격리 모드에 대한 자세한 내용은 트랜잭션 격리 수준 설정을 참조하세요.
기본적으로 스냅샷 격리 모드는 repeatable_read
입니다. 이 모드는 스냅샷 단계 중에 읽는 모든 데이터에 공유 잠금을 설정합니다. 이렇게 하면 다른 트랜잭션이 기존 행을 수정하는 것을 방지하고 새 레코드 삽입이 허용될 수 있습니다(잠금 에스컬레이션 참조).
소스 데이터베이스에서 이미 사용 설정된 경우 테이블을 잠그지 않고 전체 데이터 일관성을 제공하므로 스냅샷 격리 복제를 사용하는 것이 좋습니다. 사용 설정하지 않은 경우 사용 설정하기 전에 SQL Server 데이터베이스 엔진에서 행 버전 관리 기반 격리 수준의 영향을 자세히 알아보세요.
또는 스냅샷 단계 중 테이블을 잠그지 않는 read_committed
격리 모드를 사용합니다.
복제 작업에서 스냅샷 격리 사용 설정
SQL Server 데이터베이스에서 스냅샷 격리를 사용 설정합니다.
ALTER DATABASE DATABASE_NAME SET ALLOW_SNAPSHOT_ISOLATION ON
DATABASE_NAME
을 SQL Server 데이터베이스 이름으로 바꿉니다.런타임 인수
snapshot.isolation.mode
를snapshot
으로 설정합니다. 자세한 내용은 복제 작업에 런타임 인수 전달을 참조하세요.
MySQL
복제 작업은 MySQL 데이터베이스의 소스 테이블에 있는 변경사항을 캡처하기 위해 Debezium 커넥터를 사용합니다. snapshotting
단계에서 Debezium은 구성된 snapshot.locking.mode
에 따라 잠금을 획득합니다.
기본적으로 스냅샷 잠금 모드는 minimal
입니다. 이 모드에서 커넥터는 데이터베이스 스키마 및 기타 메타데이터를 읽을 때 스냅샷의 초기 부분에 대해 전역 읽기 잠금을 설정합니다. 그런 다음 커넥터가 테이블을 잠그지 않는 REPEATABLE READ
트랜잭션을 사용하여 일관된 읽기를 통해 모든 행을 가져옵니다.
잠금을 방지하려면 모드를 none
으로 설정합니다.
또는 Cloud SQL에서 실행되는 MySQL 데이터베이스의 잠금이 방지되도록 트랜잭션 데이터베이스 대신 복제본에서 복제합니다.
MySQL 스냅샷 생성 중 잠금 동작 변경
- MySQL 데이터베이스에서 스냅샷 잠금 동작을 변경하려면 런타임 인수
snapshot.locking.mode
속성을 적절한 잠금 모드 값으로 설정합니다.
자세한 내용은 복제 작업에 Debezium 인수 전달을 참조하세요.
제한사항
- Cloud Data Fusion의 복제는 Debezium Connector 버전 1.3을 지원합니다.
Cloud Data Fusion의 Oracle 소스
Cloud Data Fusion에서 Oracle 소스의 복제는 Datastream에서 제공합니다. DataStream은 테이블을 잠그지 않습니다.
다음 단계
- 복제 자세히 알아보기