기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
논리적 복제
논리적 복제는 객체의 복제 자격 증명과 변경 사항에 따라 데이터 객체와 변경 사항을 복제하는 방법입니다. 논리적 복제는 하나 이상의 구독자가 게시자 노드에서 하나 이상의 게시를 구독하는publishandsubscribemodel을 사용합니다. 구독자는 구독하는 간행물에서 데이터를 가져옵니다.
논리적 복제를 사용하면 데이터 복제와 보안 모두에 대한 세분화된 제어가 가능합니다. 다음 사용 사례에서 논리적 복제를 사용할 수 있습니다.
PostgreSQL의 다양한 메이저 버전 간 복제
다양한 플랫폼(예: Linux에서 Windows로)의 PostgreSQL 인스턴스 간 복제
아키텍처
다음 워크플로 단계는 논리적 복제 아키텍처의 작동 방식을 보여줍니다.
게시자 데이터베이스의 데이터 스냅샷을 만들고 해당 데이터를 구독자 데이터베이스에 복사합니다.
게시자 데이터베이스의 변경 사항은 구독자에게 실시간으로 전송됩니다.
구독자는 게시자와 동일한 순서로 데이터를 적용하여 단일 구독 내의 게시에 대해 트랜잭션 일관성을 보장합니다.
기본 인스턴스(게시자)에서 게시를 정의할 수 있습니다. 게시는 테이블 또는 테이블 그룹에서 생성된 변경 사항 집합입니다. INSERT, UPDATE, DELETE 및 TRUNCATE 작업의 조합에서 변경 사항을 선택할 수 있습니다. 기본적으로 이러한 모든 변경 사항은 구독자 데이터베이스에 복제됩니다. 이는 byte-by-byte 복제에 정확한 블록 주소가 사용되는 물리적 복제와 대조적입니다.
구독자 측에서 업데이트 또는 삭제할 적절한 행을 식별할 수 있도록 게시된 테이블에 UPDATE 및 DELETE 작업을 복제하도록 구성된 REPLICA IDENTITYfull
. 즉, 전체 행이 키가 됩니다. 이 설정은 비효율적이므로 복제본 자격 증명을 최후의 수단으로 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
)로 설정합니다.
각 구독은 복제 슬롯 하나를 통해 변경 사항을 수신합니다.
다음 단계에서는 논리적 복제를 수행하는 방법을 보여줍니다.
소스 데이터베이스의 테이블 그룹(복제의 일부)에 대해 CREATE PUBLICATION
명령을 사용하여 게시자를 생성합니다. CREATE SUBSCRIPTION
명령을 사용하여 구독자를 생성한 다음 구독자를 생성할 때 게시 세부 정보를 제공합니다. 초기 데이터 로드는 소스 데이터베이스에서 대상 데이터베이스로 자동으로 시작됩니다.
복제 슬롯으로 캡처된 변경 데이터는 대상 데이터베이스에 복제됩니다.
pg_stat_replication
(카탈로그 테이블)을 사용하여 복제 상태를 확인합니다. pg_stat_replication_slots 를 사용하여 복제 슬롯을 확인합니다.
자세한 내용은 AWS 데이터베이스 블로그의 논리적 복제를 사용하여 관리형 Amazon RDS for PostgreSQL 및 Amazon Aurora를 자체 관리형 PostgreSQL 게시물에 복제
제한 사항
마이그레이션을 시작하기 전에 논리적 복제 방법의 다음 제한 사항을 고려하는 것이 좋습니다.
논리적 복제에는 현재 가장 많은 제한과 기능 격차가 있습니다.
논리적 복제는 데이터 정의 언어(DDL), 시퀀스 및 대규모 객체 작업을 복제할 수 없습니다. 잘라내기 작업(외부 키가 있는 테이블에 적용)에는 동일한 구독에 관련 테이블이 포함되어야 합니다.
논리적 복제의 제한 사항에 대한 자세한 내용은 31.6을 참조하세요. PostgreSQL 설명서의 제한 사항