이 페이지에서는 오픈소스 데이터베이스 백업 서버인 pgBackRest와 호환되도록 AlloyDB Omni를 구성하여 데이터를 보호하는 방법을 보여줍니다. 사용 가능한 백업 솔루션의 개요는 AlloyDB Omni 백업 및 복원을 참고하세요.
Kubernetes 기반 정보는 Kubernetes에서 백업 및 복원을 참고하세요.
pgBackRest는 PostgreSQL용 유연한 백업 및 복원 유틸리티입니다. AlloyDB Omni는 PostgreSQL과 호환되므로 pgBackRest를 사용하여 수동, 예약, 연속 백업을 통해 AlloyDB Omni 데이터를 보호할 수 있습니다.
pgBackRest는 로컬, 원격 또는 클라우드 기반 저장소에 백업 데이터를 씁니다. 저장소를 하나 이상 설정한 후 pgBackRest를 사용하여 point-in-time recovery (PITR)를 비롯한 다양한 방법으로 AlloyDB Omni 데이터를 복원할 수 있습니다.
AlloyDB Omni에는 Docker 컨테이너에 pgBackRest가 포함되어 있습니다. 즉, 추가 소프트웨어를 설치하지 않고도 pgBackRest를 사용하여 AlloyDB Omni 데이터를 백업하고 복원할 수 있습니다.
pgBackRest에 관한 자세한 내용은 사용자 가이드를 참고하세요.
시작하기 전에
pgBackRest와 호환되도록 AlloyDB Omni를 구성하려면 관리하는 서버에 AlloyDB Omni가 설치되어 실행되어 있어야 합니다.
파일 시스템 경로에 관한 참고사항
AlloyDB Omni에 포함된 pgBackRest 소프트웨어는 AlloyDB Omni와 동일한 Docker 컨테이너에서 실행됩니다. 따라서 구성 파일이나 명령줄 인수를 통해 pgBackRest에 제공하는 모든 파일 시스템 경로는 호스트 머신의 파일 시스템이 아닌 컨테이너의 파일 시스템에 있는 위치입니다.
이 페이지의 많은 명령어와 예시에서는 호스트 시스템의 데이터 디렉터리 위치와 관계없이 데이터 디렉터리를 /var/lib/postgresql/data
로 참조합니다. AlloyDB Omni는 데이터 디렉터리를 컨테이너화된 파일 시스템의 /var/lib/postgresql/data
에 마운트하기 때문입니다. 따라서 추가 설정 없이 데이터 디렉터리를 pgBackRest 구성 및 저장소를 저장하는 위치로 사용할 수 있습니다.
AlloyDB Omni 데이터 디렉터리 외부의 호스트 머신 파일 시스템에 있는 디렉터리를 읽거나 쓰도록 컨테이너화된 pgBackRest를 구성하려면 이러한 디렉터리를 컨테이너에서 사용할 수 있도록 설정해야 합니다.
로컬 백업을 사용한 기본 구성
이 섹션의 단계에서는 pgBackRest가 AlloyDB Omni 데이터 디렉터리의 하위 디렉터리에 연속 백업 데이터를 쓰도록 지시하는 짧은 구성 파일을 비롯하여 pgBackRest의 기본 설정을 안내합니다.
pgBackRest는 AlloyDB Omni와 호환되는 유연한 서드 파티 제품이므로 필요와 환경에 따라 이러한 단계를 수정할 수 있습니다. 파일 시스템 경로를 변경하는 경우 컨테이너에 표시되어야 합니다. 파일 시스템 경로에 관한 참고사항을 참고하세요.
신뢰할 수 있는 Unix 소켓 인증 설정
AlloyDB Omni 호스트 머신이 비밀번호를 요구하지 않고 데이터베이스 서버의 postgres
사용자를 인증하도록 허용합니다. 이렇게 하면 후속 단계가 간소화됩니다.
DATA_DIR/pg_hba.conf
파일에 다음 줄을 추가합니다.local all postgres trust
DATA_DIR을 데이터 디렉터리의 파일 시스템 경로로 바꿉니다(예:
/home/$USER/alloydb-data
).AlloyDB Omni를 다시 시작합니다.
docker restart CONTAINER_NAME
CONTAINER_NAME
을 AlloyDB Omni 컨테이너를 설치할 때 할당한 이름(예:my-omni
)으로 바꿉니다.
백업 저장소 만들기 및 구성
이 섹션에서 만든 구성 파일은 로컬에 저장된 연속 백업을 위한 최소 설정을 사용 설정하는 예입니다. 이 파일은 필요에 따라 원하는 대로 수정할 수 있습니다. 자세한 내용은 클러스터 스탠자 구성을 참고하세요.
AlloyDB Omni 데이터 디렉터리에
backups
하위 디렉터리를 만듭니다.mkdir DATA_DIR/backups
데이터 디렉터리 내에
pgbackrest.conf
라는 파일을 만들고 다음 콘텐츠를 이 파일에 복사합니다.[global] # Paths (all mandatory): repo1-path=/var/lib/postgresql/data/backups spool-path=/var/lib/postgresql/data lock-path=/var/lib/postgresql/data # Retention details: repo1-retention-full=3 repo1-retention-full-type=count repo1-retention-diff=16 # Force a checkpoint to start backup immediately: start-fast=y # Logging parameters: log-path=/var/lib/postgresql/data/backups log-level-console=info log-level-file=info # Recommended ZSTD compression: compress-type=zst # Other performance parameters: archive-async=y archive-push-queue-max=1024MB archive-get-queue-max=256MB archive-missing-retry=y [global:archive-push] process-max=2 [global:archive-get] process-max=2 [omni] pg1-user=postgres pg1-socket-path=/var/lib/postgresql/data pg1-path=/var/lib/postgresql/data/data
pgbackrest stanza-create
명령어를 사용하여 백업 위치를 초기화합니다.docker exec CONTAINER_NAME pgbackrest --config-path=/var/lib/postgresql/data/backups --stanza=omni stanza-create
연속 백업을 위한 데이터베이스 구성
연속 백업을 사용 설정하려면 다음 명령어를 실행하여 여러 PostgreSQL 매개변수를 설정합니다.
docker exec CONTAINER_NAME psql -h localhost -U postgres \ -c "ALTER SYSTEM SET archive_command='pgbackrest --config-path=/var/lib/postgresql/data/backups --stanza=omni archive-push %p';" \ -c "ALTER SYSTEM SET archive_mode=on;" \ -c "ALTER SYSTEM SET max_wal_senders=10;" \ -c "ALTER SYSTEM SET wal_level=replica;"
AlloyDB Omni를 다시 시작합니다.
docker restart CONTAINER_NAME
pgBackRest 명령어 실행
이전 섹션의 단계를 완료하면 pgBackRest가 AlloyDB Omni 서버와 호환되도록 구성됩니다. 백업 상태를 확인하고, 수동 백업을 만들고, 기타 작업을 실행하려면 명령어 참조를 참고하세요.
권장사항은 AlloyDB Omni 컨테이너가 설치된 호스트 머신에서 docker exec
명령어를 사용하여 pgBackRest 명령어를 직접 실행하는 것입니다. 예를 들어 수동 백업을 만들려면 pgbackrest backup
명령어를 사용합니다. docker
exec
명령어 내에서 실행되고 이전에 만든 구성 파일을 참조하도록 수정합니다.
docker exec CONTAINER_NAME pgbackrest --config-path=/var/lib/postgresql/data/backups --stanza=omni --type=full backup
환경 변수를 사용하여 pgBackRest 구성 파일의 위치를 설정할 수도 있습니다. 자세한 내용은 구성 경로 옵션을 참고하세요.
예약된 백업 설정
예약된 백업을 설정하려면 필요한 빈도로 pgbackrest backup
명령어를 실행하는 크론 작업을 만듭니다. 자세한 내용은 백업 예약을 참고하세요.
맞춤 구성 및 원격 백업
기본 구성이 작동하면 pgBackRest 구성 참조에 설명된 옵션을 사용하여 필요와 환경설정에 맞게 구성 파일을 조정할 수 있습니다.
여기에는 원격 머신 또는 클라우드에 있는 추가 백업 저장소를 지정하는 것이 포함됩니다. 저장소를 여러 개 정의하면 pgBackRest는 기본 백업 작업으로 모든 저장소에 동시에 씁니다.
예를 들어 pgBackRest는 다양한 관련 구성 옵션을 사용하여 Cloud Storage 버킷을 백업 저장소로 사용하는 것을 지원합니다. 다음 섹션에서는 이러한 옵션을 사용하는 한 가지 방법을 보여줍니다.
Cloud Storage를 사용한 구성 예시
이 섹션의 단계는 로컬 백업이 포함된 기본 구성에서 소개된 구성 파일을 기반으로 합니다. 이 파일의 수정사항은 Cloud Storage 버킷의 두 번째 백업 저장소를 정의하며, 이 저장소는 ID 및 액세스 관리 (IAM)를 통해 액세스됩니다.
이 예시의 자동 인증 스타일을 사용하려면 Compute Engine VM 인스턴스에서 AlloyDB Omni 클러스터를 실행해야 합니다. Compute Engine VM 인스턴스에서 AlloyDB Omni를 실행하지 않는 경우에도 로컬 파일 시스템에 저장된 Google Cloud 서비스 계정 키와 같은 다른 인증 방법을 사용하여 Cloud Storage 버킷에 백업할 수 있습니다.
Cloud Storage 기반 pgBackRest 저장소를 정의하도록 이전 구성 파일을 확장하려면 다음 단계를 따르세요.
VM 인스턴스에 연결된 서비스 계정이 버킷에 쓸 수 있도록 버킷 권한을 구성합니다. 이렇게 하려면 해당 서비스 계정에 스토리지 객체 사용자 IAM 역할을 설정해야 합니다.
pgbackrest.conf
파일에 다음 줄을 추가합니다.# Cloud Storage access details: repo2-type=gcs repo2-gcs-key-type=auto repo2-storage-verify-tls=n # Cloud Storage bucket and path details: repo2-gcs-bucket=BUCKET_NAME repo2-path=/pgbackrest # Cloud Storage backup retention parameters: repo2-retention-full=8 repo2-retention-full-type=count
BUCKET_NAME을 pgBackRest에서 백업을 저장할 Cloud Storage 버킷의 이름으로 바꿉니다.
pgbackrest stanza-create
명령어를 사용하여 클라우드 기반 백업 위치를 초기화합니다.docker exec CONTAINER_NAME pgbackrest --config-path=/var/lib/postgresql/data/backups --stanza=omni stanza-create
pgbackrest stanza-create
명령어를 사용하여 Cloud Storage 버킷에서 백업 저장소를 초기화하면 pgBackRest는 다음 두 위치에 백업합니다.
로컬 파일 시스템의 위치로, 구성 파일의 다른 위치에
repo1-path
로 정의되어 있습니다.이 예에서 설정된
repo2-
구성 디렉티브를 사용하여 정의된 Cloud Storage 버킷입니다.