AlloyDB Omni용 Barman 설정

이 페이지에서는 오픈소스 데이터베이스 백업 서버인 Barman과 호환되도록 AlloyDB Omni를 구성하여 데이터를 보호하는 방법을 설명합니다.

PostgreSQL과 호환되는 데이터베이스 백업 기술을 사용하여 AlloyDB Omni 데이터를 보호할 수 있습니다. 예를 들어 관리하는 Barman 서버의 연결을 허용하도록 AlloyDB Omni를 구성할 수 있습니다. 이렇게 하면 Barman 서버가 AlloyDB Omni 서버에 저장된 데이터의 지속적인 백업을 실행할 수 있습니다.

Barman과 AlloyDB Omni 서버가 함께 작동하도록 구성한 후에는 Barman 명령어를 실행하여 다음을 비롯한 다양한 데이터 보호 및 재해 복구 작업을 실행할 수 있습니다.

  • 데이터의 주문형 백업을 만듭니다.
  • 백업 서버에 데이터 변경사항의 동기식 WAL 스트리밍을 설정합니다.
  • 특정 백업에서 복원합니다.
  • 특정 시점 복원을 실행합니다.

Barman 작동에 관한 자세한 내용은 Barman 매뉴얼을 참고하세요.

시작하기 전에

Barman과 호환되도록 AlloyDB Omni를 구성하려면 다음이 필요합니다.

Barman과 호환되도록 AlloyDB Omni 구성

Barman과 함께 작동하도록 AlloyDB Omni 서버를 준비하려면 AlloyDB Omni를 설치한 서버에서 다음 명령어를 실행합니다.

  1. 적절한 권한을 가진 barman 데이터베이스 사용자를 만듭니다.

    Docker

    docker exec CONTAINER_NAME psql -h localhost -U postgres -c "
    CREATE USER barman;
    GRANT EXECUTE ON FUNCTION pg_backup_start(text, boolean) to barman;
    GRANT EXECUTE ON FUNCTION pg_backup_stop(boolean) to barman;
    GRANT EXECUTE ON FUNCTION pg_switch_wal() to barman;
    GRANT EXECUTE ON FUNCTION pg_create_restore_point(text) to barman;
    GRANT pg_read_all_settings TO barman;
    GRANT pg_read_all_stats TO barman;
    CREATE USER streaming_barman WITH REPLICATION;
    "

    CONTAINER_NAME을 AlloyDB Omni 컨테이너를 설치할 때 할당한 이름으로 바꿉니다.

    Podman

    podman exec CONTAINER_NAME psql -h localhost -U postgres -c "
    CREATE USER barman;
    GRANT EXECUTE ON FUNCTION pg_backup_start(text, boolean) to barman;
    GRANT EXECUTE ON FUNCTION pg_backup_stop(boolean) to barman;
    GRANT EXECUTE ON FUNCTION pg_switch_wal() to barman;
    GRANT EXECUTE ON FUNCTION pg_create_restore_point(text) to barman;
    GRANT pg_read_all_settings TO barman;
    GRANT pg_read_all_stats TO barman;
    CREATE USER streaming_barman WITH REPLICATION;
    "

    CONTAINER_NAME을 AlloyDB Omni 컨테이너를 설치할 때 할당한 이름으로 바꿉니다.

  2. DATA_DIR/pg_hba.conf 파일에서 파일에 있는 host all all all scram-sha-256앞에 다음 행을 추가합니다.

    host all barman BARMAN_IP/32 AUTHN_METHOD
    host replication streaming_barman BARMAN_IP/32 AUTHN_METHOD
    

    다음을 바꿉니다.

    • DATA_DIR: AlloyDB Omni 데이터 디렉터리에 사용되는 파일 시스템 경로입니다.

    • BARMAN_IP: Barman 서버의 IP 주소입니다.

    • AUTHN_METHOD: PostgreSQL용 AlloyDB 서버가 Barman 서버에서 기대하는 PostgreSQL 인증 방법입니다. 다음 값 중 하나를 사용하는 것이 좋습니다.

      • Barman 서버가 비밀번호 없이 인증할 수 있도록 하려면 trust를 사용하세요.

      • Barman 서버에서 비밀번호를 요구하려면 scram-sha-256를 사용합니다.

  3. DATA_DIR/postgresql.conf 파일에 다음 줄을 추가합니다.

    archive_command='/bin/true'
    archive_mode=on
    listen_addresses='*'
    wal_level='replica'
    
  4. AlloyDB Omni 서비스를 다시 시작합니다.

    Docker

    docker restart CONTAINER_NAME

    Podman

    podman restart CONTAINER_NAME

    CONTAINER_NAME을 AlloyDB Omni 컨테이너를 설치할 때 할당한 이름으로 바꿉니다.

  5. 다음 명령어를 실행하여 필요한 매개변수가 모두 적절하게 설정되었는지 확인합니다.

    Docker

    docker exec CONTAINER_NAME psql -h localhost -U postgres -c "
    SELECT name, setting
       FROM pg_catalog.pg_settings
       WHERE name IN ('archive_command',
                      'archive_mode',
                      'listen_addresses',
                      'wal_level')
       ORDER BY name;"

    Podman

    podman exec CONTAINER_NAME psql -h localhost -U postgres -c "
    SELECT name, setting
       FROM pg_catalog.pg_settings
       WHERE name IN ('archive_command',
                      'archive_mode',
                      'listen_addresses',
                      'wal_level')
       ORDER BY name;"

    출력은 다음과 같습니다.

       name          |  setting
    ------------------|-----------
    archive_command   | /bin/true
    archive_mode      | on
    listen_addresses  | *
    wal_level         | replica
    (4 rows)
    

Barman 백업 서버 설정

AlloyDB Omni 서버에서 작동하도록 Barman을 설정하고 구성하려면 Barman 서버에서 다음 명령어를 실행합니다.

  1. 스트리밍 복제 연결이 작동하는지 확인합니다.

    psql -h DATABASE_IP -U streaming_barman -c "IDENTIFY_SYSTEM" replication=1

    출력은 다음과 비슷합니다.

          systemid       | timeline |  xlogpos   | dbname
    ---------------------+----------+------------+--------
     7265722823667040273 |        1 | 0/1F0AFCD0 |
    (1 row)
    
  2. Barman이 barman 데이터베이스 사용자로 AlloyDB Omni 서버에 연결할 수 있는지 확인합니다.

    psql -t -h DATABASE_IP -U barman -d postgres -c "SELECT 'Connected as: '||current_user"

    DATABASE_IP를 AlloyDB Omni 서버의 IP 주소로 바꿉니다.

    출력은 다음과 비슷합니다.

    Connected as: barman
    
  3. 필요와 환경에 따라 Barman 백업 서버를 구성합니다.

    구성에는 다음 설정이 포함되어야 합니다.

    • barman 사용자로 AlloyDB Omni postgres 데이터베이스에 연결하도록 conninfo를 설정합니다.
    • streaming_conninfo를 설정하여 streaming_barman 사용자를 사용합니다.
    • Barman 문서에 설명된 대로 WAL 스트리밍을 사용 설정하는 데 필요한 다른 디렉티브를 구성합니다.

    다음의 간단하지만 완전한 예시에서는 Barman 문서의 스트리밍 구성 예시를 수정합니다.

    [CONFIGURATION_TAG]
    description = "Backup settings for my AlloyDB Omni server"
    conninfo = host=DATABASE_IP user=barman dbname=postgres
    streaming_conninfo = host=DATABASE_IP user=streaming_barman
    backup_method = postgres
    streaming_archiver = on
    slot_name = barman
    

    다음을 바꿉니다.

    • CONFIGURATION_TAG: barman 명령어를 실행할 때 이 서버 구성을 식별하는 짧은 태그입니다(예: omni).

    • DATABASE_IP: AlloyDB Omni 서버의 IP 주소입니다.

  4. barman 사용자로 전환합니다.

    sudo su - barman
  5. barman receive-wal 명령어를 사용하여 복제 슬롯을 만든 다음 데이터베이스 서버에서 WAL 스트림을 수신하기 시작합니다.

    barman receive-wal --create-slot CONFIGURATION_TAG
    barman receive-wal CONFIGURATION_TAG &

    CONFIGURATION_TAG를 이전 단계에서 선택한 구성 태그로 바꿉니다.

이제 Barman이 AlloyDB Omni 서버와 호환되도록 구성되었습니다. 복제 상태를 확인하고, 수동 백업을 만들고, 기타 작업을 실행하려면 일반 명령어를 참고하세요.

예를 들어 수동 백업을 만들려면 barman backup 명령어를 실행합니다.

다음 단계