주:

물리적 대기 복제를 사용하여 VM에서 PostgreSQL 데이터베이스에 대해 리전 간 재해 복구 구현

소개

pg_basebackup는 실행 중인 PostgreSQL 데이터베이스 클러스터의 전체 백업을 수행하기 위해 PostgreSQL에서 제공하는 명령행 유틸리티입니다. 복제 또는 복구 목적으로 사용할 수 있는 데이터베이스 클러스터의 이진 복사본을 생성하도록 설계되었습니다.

pg_basebackup는 실행 중인 PostgreSQL 데이터베이스 클러스터의 전체 백업을 수행하기 위해 PostgreSQL에서 제공하는 명령행 유틸리티입니다. 복제 또는 복구 목적으로 사용할 수 있는 데이터베이스 클러스터의 이진 복사본을 생성하도록 설계되었습니다.

pg_basebackup 유틸리티의 주요 장점 중 하나는 데이터베이스가 상주하는 파일 시스템에 액세스할 필요 없이 작동한다는 것입니다. 대신 스트리밍 복제 프로토콜을 사용하여 PostgreSQL 서버에 연결하여 서버가 실행되는 동안에도 안전하고 편리하게 사용할 수 있습니다.

일반적으로 WAL(미리 쓰기 로깅) 아카이빙과 함께 사용되는 pg_basebackup 유틸리티는 스트리밍 복제를 설정하고 VM(가상 머신)에서 실행되는 PostgreSQL 환경에 대해 고가용성 및 재해 복구를 보장하는 데 중요한 역할을 합니다.

주요 특징:

이 사용지침서에서는 컴퓨트 VM에 호스트된 두 PostgreSQL 데이터베이스 간에 리전 간 스트리밍 복제를 설정하는 작업에 대해 설명합니다.

목표

필요 조건

리전 전반에 걸쳐 VCN 피어링을 생성합니다. 여러 리전의 컴퓨트 VM에 접속하려면 VCN 피어링을 설정해야 합니다. 자세한 내용은 다음을 참조하십시오.

다른 지역의 데이터베이스 간에 원활한 연결을 설정하도록 VCN 피어링이 올바르게 구성되었는지 확인합니다.

작업 1: 기본 PostgreSQL 데이터베이스 설정

  1. primary PostgreSQL 데이터베이스에 replicator라는 유저를 생성합니다.

    CREATE USER replicator WITH REPLICATION ENCRYPTED PASSWORD '*********';
    
  2. 역할/사용자를 검증합니다.

    postgres=# \du
                                        List of roles
       Role name    |                         Attributes                         | Member of
    ----------------+------------------------------------------------------------+-----------
    admin          | Superuser                                                  | {}
    guest          |                                                            | {}
    mytestdb       |                                                            | {}
    postgres       | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
    replicator     | Replication  
    
  3. 다음 세부 정보로 postgresql.conf 파일을 업데이트합니다.

    listen_addresses = '*'
    
  4. pg_hba.conf 파일을 업데이트합니다. 대기 데이터베이스 IP 주소를 사용합니다.

    host    replication     replicator      Standby_DB_IP/32       md5
    
  5. PostgreSQL 서비스를 다시 시작합니다.

    sudo systemctl restart PostgreSQL
    

작업 2: Standby PostgreSQL 데이터베이스 설정

  1. PostgreSQL 서비스를 중지합니다.

    sudo systemctl stop PostgreSQL
    
  2. 기존 바이너리를 제거합니다.

    cp -R /var/lib/postgresql/13/main /var/lib/postgresql/13/main_old
    rm -rf /var/lib/postgresql/13/main
    
  3. pg_basebackup 명령을 실행하여 스트리밍 복제를 설정합니다.

    pg_basebackup -h PrimaryDB_IP -D /var/lib/postgresql/13/main -U replicator -P -v -R -X stream -C -S slaveslot1 
    
  4. PostgreSQL 서비스를 시작합니다.

    sudo systemctl start PostgreSQL
    

작업 3: 기본 PostgreSQL 데이터베이스에서 스트리밍 복제 확인

기본 PostgreSQL 데이터베이스에서 다음 명령을 실행하여 기본 데이터베이스와 DR 데이터베이스 간의 동기화 상태를 수집합니다.

SELECT * FROM pg_replication_slots;
SELECT * FROM pg_stat_replication;

승인

추가 학습 자원

docs.oracle.com/learn에서 다른 랩을 탐색하거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하세요. 또한 education.oracle.com/learning-explorer를 방문하여 Oracle Learning Explorer가 되십시오.

제품 설명서는 Oracle Help Center를 참조하십시오.