예: Aurora PostgreSQL DB 클러스터에서 논리적 복제 사용
다음 절차는 두 Aurora PostgreSQL DB 클러스터 간에 논리적 복제를 시작하는 방법을 보여줍니다. 게시자와 구독자 모두 Aurora PostgreSQL DB 클러스터의 논리적 복제 설정에 설명된 대로 논리적 복제를 구성해야 합니다.
지정된 게시자인 Aurora PostgreSQL DB 클러스터도 복제 슬롯에 대한 액세스를 허용해야 합니다. 그러려면 Aurora PostgreSQL DB 클러스터의 Amazon VPC 서비스를 기반으로 Virtual Public Cloud(VPC)와 연결된 보안 그룹을 수정합니다. 구독자의 VPC와 연결된 보안 그룹을 게시자의 보안 그룹에 추가하여 인바운드 액세스를 허용합니다. 자세한 내용을 알아보려면 Amazon VPC 사용 설명서의 보안 그룹을 사용하여 리소스에 대한 트래픽 제어를 참조하세요.
이러한 예비 단계가 완료되면 다음 절차에 설명된 대로 게시자에는 CREATE PUBLICATION
, 구독자에는 CREATE SUBSCRIPTION
PostgreSQL 명령을 사용할 수 있습니다.
두 Aurora PostgreSQL DB 클러스터 간에 논리적 복제를 시작하는 방법
이 단계에서는 Aurora PostgreSQL DB 클러스터에 예시 테이블을 생성할 데이터베이스가 있는 라이터 인스턴스가 있다고 가정합니다.
게시자 Aurora PostgreSQL DB 클러스터에서
다음 SQL 문을 사용하여 테이블을 생성합니다.
CREATE TABLE LogicalReplicationTest (a int PRIMARY KEY);
다음 SQL 문을 사용해 게시자 데이터베이스에 데이터를 삽입합니다.
INSERT INTO LogicalReplicationTest VALUES (generate_series(1,10000));
다음 SQL 문을 사용하여 테이블에 데이터가 있는지 확인합니다.
SELECT count(*) FROM LogicalReplicationTest;
다음과 같이
CREATE PUBLICATION
문을 사용하여 이 테이블에 대한 게시를 생성합니다.CREATE PUBLICATION testpub FOR TABLE LogicalReplicationTest;
-
구독자 Aurora PostgreSQL DB 클러스터에서
다음과 같이 게시자에서 생성한 것과 동일한
LogicalReplicationTest
테이블을 구독자에 생성합니다.CREATE TABLE LogicalReplicationTest (a int PRIMARY KEY);
이 테이블이 비어 있는지 확인합니다.
SELECT count(*) FROM LogicalReplicationTest;
구독을 만들어 게시자로부터 변경 사항을 받습니다. 게시자 Aurora PostgreSQL DB 클러스터에 다음 세부 정보를 사용해야 합니다.
host - 게시자 Aurora PostgreSQL DB 클러스터의 라이터 DB 인스턴스입니다.
포트 - 라이터 DB 인스턴스가 수신 대기하는 포트입니다. PostgreSQL의 기본값은 5432입니다.
dbname - 데이터베이스의 이름입니다.
CREATE SUBSCRIPTION testsub CONNECTION 'host=
publisher-cluster-writer-endpoint
port=5432 dbname=db-name
user=user
password=password
' PUBLICATION testpub;참고
보안 모범 사례로 여기에 표시된 프롬프트 이외의 암호를 지정하는 것이 좋습니다.
구독이 생성된 후 논리적 복제 슬롯이 게시자 측에 생성됩니다.
이 예시에서 초기 데이터가 구독자 측에서 복제된다는 것을 확인하려면 구독자 데이터베이스에서 다음 SQL 문을 사용하십시오.
SELECT count(*) FROM LogicalReplicationTest;
게시자에 대한 추가 변경 사항은 구독자에게로 복제됩니다.
논리적 복제는 성능에 영향을 미칩니다. 복제 작업이 완료된 후에는 논리적 복제를 해제하는 것이 좋습니다.