논리적 복제 - AWS 권장 가이드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

논리적 복제

논리적 복제는 객체의 복제 자격 증명과 변경 사항에 따라 데이터 객체와 변경 사항을 복제하는 방법입니다. 논리적 복제는 하나 이상의 구독자가 게시자 노드에서 하나 이상의 게시를 구독하는publishandsubscribemodel을 사용합니다. 구독자는 구독하는 간행물에서 데이터를 가져옵니다.

논리적 복제를 사용하면 데이터 복제와 보안 모두에 대한 세분화된 제어가 가능합니다. 다음 사용 사례에서 논리적 복제를 사용할 수 있습니다.

  • PostgreSQL의 다양한 메이저 버전 간 복제

  • 다양한 플랫폼(예: Linux에서 Windows로)의 PostgreSQL 인스턴스 간 복제

아키텍처

다음 워크플로 단계는 논리적 복제 아키텍처의 작동 방식을 보여줍니다.

  1. 게시자 데이터베이스의 데이터 스냅샷을 만들고 해당 데이터를 구독자 데이터베이스에 복사합니다.

  2. 게시자 데이터베이스의 변경 사항은 구독자에게 실시간으로 전송됩니다.

  3. 구독자는 게시자와 동일한 순서로 데이터를 적용하여 단일 구독 내의 게시에 대해 트랜잭션 일관성을 보장합니다.

기본 인스턴스(게시자)에서 게시를 정의할 수 있습니다. 게시는 테이블 또는 테이블 그룹에서 생성된 변경 사항 집합입니다. INSERT, UPDATE, DELETE 및 TRUNCATE 작업의 조합에서 변경 사항을 선택할 수 있습니다. 기본적으로 이러한 모든 변경 사항은 구독자 데이터베이스에 복제됩니다. 이는 byte-by-byte 복제에 정확한 블록 주소가 사용되는 물리적 복제와 대조적입니다.

구독자 측에서 업데이트 또는 삭제할 적절한 행을 식별할 수 있도록 게시된 테이블에 UPDATE 및 DELETE 작업을 복제하도록 구성된 REPLICA IDENTITY가 있어야 합니다. 대부분의 경우 복제본 자격 증명은 기본 키 또는 고유 키로 결정됩니다. 기본 키가 없고 기본 키를 생성할 수 없는 경우 복제본 자격 증명을 로 설정할 수 있습니다full. 즉, 전체 행이 키가 됩니다. 이 설정은 비효율적이므로 복제본 자격 증명을 최후의 수단으로 full로 설정하는 것이 좋습니다.

구독은 논리적 복제의 다운스트림 측입니다. 구독이 정의된 노드를 구독자라고 합니다. 구독은 구독하려는 다른 데이터베이스 및 간행물 세트(하나 이상)에 대한 연결을 정의합니다.

구성 설정

게시자 설정에 필요한 구성은 다음과 같습니다.

  • wal_level로 설정합니다logical.

  • 최소한 연결할 것으로 예상되는 구독 수와 테이블 동기화를 위한 일부 예약 슬롯을 수용max_replication_slots하도록를 설정합니다.

  • max_wal_senders를 수용 max_replication_slots및 물리적 복제본 수로 설정합니다.

구독자 설정에는 다음 구성이 필요합니다.

  • 구독자에게 추가하려는 구독 수를 최소화하고 테이블 동기화를 위한 일부 예약 구독을 수용max_replication_slots하도록를 설정합니다.

  • 최소한 구독 수와 테이블 동기화를 위한 일부 예약 작업자를 수용max_logical_replication_workers하도록를 설정합니다.

  • max_worker_processes 최소를 (max_logical_replication_workers +1)로 설정합니다.

각 구독은 복제 슬롯 하나를 통해 변경 사항을 수신합니다.

다음 단계에서는 논리적 복제를 수행하는 방법을 보여줍니다.

  1. 소스 데이터베이스의 테이블 그룹(복제의 일부)에 대해 CREATE PUBLICATION 명령을 사용하여 게시자를 생성합니다.

  2. CREATE SUBSCRIPTION 명령을 사용하여 구독자를 생성한 다음 구독자를 생성할 때 게시 세부 정보를 제공합니다.

  3. 초기 데이터 로드는 소스 데이터베이스에서 대상 데이터베이스로 자동으로 시작됩니다.

  4. 복제 슬롯으로 캡처된 변경 데이터는 대상 데이터베이스에 복제됩니다.

  5. pg_stat_replication(카탈로그 테이블)을 사용하여 복제 상태를 확인합니다. pg_stat_replication_slots를 사용하여 복제 슬롯을 확인합니다.

자세한 내용은 AWS 데이터베이스 블로그의 논리적 복제를 사용하여 관리형 Amazon RDS for PostgreSQL 및 Amazon Aurora를 자체 관리형 PostgreSQL 게시물에 복제를 참조하세요.

제한 사항

마이그레이션을 시작하기 전에 논리적 복제 방법의 다음 제한 사항을 고려하는 것이 좋습니다.

  • 논리적 복제에는 현재 가장 많은 제한과 기능 격차가 있습니다.

  • 논리적 복제는 데이터 정의 언어(DDL), 시퀀스 및 대규모 객체 작업을 복제할 수 없습니다. 잘라내기 작업(외부 키가 있는 테이블에 적용)에는 동일한 구독에 관련 테이블이 포함되어야 합니다.

논리적 복제의 제한 사항에 대한 자세한 내용은 31.6을 참조하세요. PostgreSQL 설명서의 제한 사항.