pgBackRest를 사용하여 AlloyDB Omni 클러스터 복원

문서 버전을 선택합니다.

이 페이지에서는 AlloyDB Omni 컨테이너에 포함된 오픈소스 백업 솔루션인 pgBackRest로 생성된 백업을 사용하여 AlloyDB Omni 클러스터를 복원하는 방법을 설명합니다.

AlloyDB Omni는 PostgreSQL과 호환되므로 pgBackRest 매뉴얼에 설명된 데이터 복원 명령어와 기법도 AlloyDB Omni에 적용됩니다. 이 페이지에서는 관련 명령어 예시를 통해 일반적인 복구 태스크를 보여줍니다.

pgBackRest가 AlloyDB Omni와 함께 작동하도록 구성하는 방법에 대한 자세한 내용은 AlloyDB Omni용 pgBackRest 설정을 참조하세요.

Kubernetes 기반 정보는 Kubernetes에서 백업 및 복원을 참고하세요.

시작하기 전에

AlloyDB Omni 클러스터를 복원하기 전에 다음이 있는지 확인합니다.

  • AlloyDB Omni 인스턴스용 pgBackRest를 설정하고 구성합니다.

  • 대상 파일 시스템의 디스크 공간이 복원된 AlloyDB Omni 데이터베이스 클러스터를 저장할 수 있도록 충분한지 확인합니다.

  • 복원 컨테이너에 사용된 AlloyDB Omni의 주 버전이 원본 소스 컨테이너와 같아야 합니다.

    PostgreSQL 버전을 확인하려면 다음 명령어를 실행합니다.

    Docker

    docker exec -u postgres CONTAINER_NAME psql -c "SELECT version();"
    

    Docker

    docker exec -u postgres CONTAINER_NAME psql -c "SELECT version();"
    

    Podman

    podman exec -u postgres CONTAINER_NAME psql -c "SELECT version();"
    

    Podman

    podman exec -u postgres CONTAINER_NAME psql -c "SELECT version();"
    

    다음 변수를 바꿉니다.

    • CONTAINER_NAME: 컨테이너에 사용한 이름입니다. 예를 들면 my-omni-1입니다.

    pgBackRest 버전을 확인하려면 다음 명령어를 실행합니다.

    Docker

    docker exec -u postgres CONTAINER_NAME pgbackrest version
    

    Docker

    docker exec -u postgres CONTAINER_NAME pgbackrest version
    

    Podman

    podman exec -u postgres CONTAINER_NAME pgbackrest version
    

    Podman

    podman exec -u postgres CONTAINER_NAME pgbackrest version
    

    다음 변수를 바꿉니다.

    • CONTAINER_NAME: 컨테이너에 사용한 이름입니다. 예를 들면 my-omni-1입니다.

    대상 컨테이너 버전이 PostgreSQL 또는 pgBackRest 버전이나 두 버전 모두와 다른 경우 일치하는 버전으로 새 대상 컨테이너를 만들어야 합니다. 만들 수 없으면 PostgreSQL에 포함된 pg_dump 또는 pg_dumpall 유틸리티와 같은 대체 방법을 사용하여 버전 간에 데이터베이스를 복사해야 합니다.

AlloyDB Omni 컨테이너 중지

AlloyDB Omni 데이터베이스 클러스터를 사용할 수 없는 상황을 시뮬레이션하려면 컨테이너를 중지합니다.

Docker

docker stop CONTAINER_NAME
docker rm CONTAINER_NAME

Docker

docker stop CONTAINER_NAME
docker rm CONTAINER_NAME

Podman

podman stop CONTAINER_NAME
podman rm CONTAINER_NAME

Podman

podman stop CONTAINER_NAME
podman rm CONTAINER_NAME

다음 변수를 바꿉니다.

  • CONTAINER_NAME: 컨테이너에 사용한 이름입니다. 예를 들면 my-omni-1입니다.

유휴 상태의 AlloyDB Omni 컨테이너 만들기

Docker

docker run -d --name CONTAINER_NAME \
-v DATA_DIR:/var/lib/postgresql/data \
-v BACKUP_DIR:/var/lib/postgresql/backups \
-p HOST_PORT:5432 \
--restart=always \
google/alloydbomni:latest sleep infinity

Docker

docker run -d --name CONTAINER_NAME \
-v DATA_DIR:/var/lib/postgresql/data \
-v BACKUP_DIR:/var/lib/postgresql/backups \
-p HOST_PORT:5432 \
--restart=always \
google/alloydbomni:latest sleep infinity

Podman

podman run -d --name CONTAINER_NAME \
-v DATA_DIR:/var/lib/postgresql/data \
-v BACKUP_DIR:/var/lib/postgresql/backups \
-p HOST_PORT:5432 \
--restart=always \
docker.io/google/alloydbomni:latest sleep infinity

Podman

podman run -d --name CONTAINER_NAME \
-v DATA_DIR:/var/lib/postgresql/data \
-v BACKUP_DIR:/var/lib/postgresql/backups \
-p HOST_PORT:5432 \
--restart=always \
docker.io/google/alloydbomni:latest sleep infinity

다음 변수를 바꿉니다.

  • CONTAINER_NAME: 컨테이너에 사용한 이름입니다. 예를 들면 my-omni-1입니다.
  • DATA_DIR: 데이터가 저장된 호스트 디렉터리 경로입니다.
  • BACKUP_DIR: 백업이 저장된 외부 디렉터리 경로
  • HOST_PORT: 컨테이너가 자체 포트 5432를 게시해야 하는 호스트 머신의 TCP 포트입니다. 호스트 머신에서도 PostgreSQL 기본 포트를 사용하려면 5432를 지정합니다.

데이터 디렉터리 삭제

AlloyDB Omni 데이터베이스 클러스터를 삭제하려면 데이터 디렉터리를 삭제합니다.

Docker

docker exec CONTAINER_NAME sh -c "rm -rf /var/lib/postgresql/data/*"

Docker

docker exec CONTAINER_NAME sh -c "rm -rf /var/lib/postgresql/data/*"

Podman

podman exec CONTAINER_NAME sh -c "rm -rf /var/lib/postgresql/data/*"

Podman

podman exec CONTAINER_NAME sh -c "rm -rf /var/lib/postgresql/data/*"

다음 변수를 바꿉니다.

  • CONTAINER_NAME: 컨테이너에 사용한 이름입니다. 예를 들면 my-omni-1입니다.

백업이 표시되는지 확인

Docker

docker exec -u postgres CONTAINER_NAME pgbackrest \
--config-path=/var/lib/postgresql/backups \
--stanza=STANZA_NAME \
info

Docker

docker exec -u postgres CONTAINER_NAME pgbackrest \
--config-path=/var/lib/postgresql/backups \
--stanza=STANZA_NAME \
info

Podman

podman exec -u postgres CONTAINER_NAME pgbackrest \
--config-path=/var/lib/postgresql/backups \
--stanza=STANZA_NAME \
info

Podman

podman exec -u postgres CONTAINER_NAME pgbackrest \
--config-path=/var/lib/postgresql/backups \
--stanza=STANZA_NAME \
info

다음 변수를 바꿉니다.

  • CONTAINER_NAME: 컨테이너에 사용한 이름입니다. 예를 들면 my-omni-1입니다.
  • STANZA_NAME: 생성한 스탠자의 이름. 예를 들면 my-stanza입니다.

백업 복원

Docker

docker exec -u postgres CONTAINER_NAME pgbackrest \
--config-path=/var/lib/postgresql/backups \
--stanza=STANZA_NAME \
restore

Docker

docker exec -u postgres CONTAINER_NAME pgbackrest \
--config-path=/var/lib/postgresql/backups \
--stanza=STANZA_NAME \
restore

Podman

podman exec -u postgres CONTAINER_NAME pgbackrest \
--config-path=/var/lib/postgresql/backups \
--stanza=STANZA_NAME \
restore

Podman

podman exec -u postgres CONTAINER_NAME pgbackrest \
--config-path=/var/lib/postgresql/backups \
--stanza=STANZA_NAME \
restore

다음 변수를 바꿉니다.

  • CONTAINER_NAME: 컨테이너에 사용한 이름입니다. 예를 들면 my-omni-1입니다.
  • STANZA_NAME: 생성한 스탠자의 이름. 예를 들면 my-stanza입니다.

유휴 상태의 AlloyDB Omni 컨테이너 삭제

Docker

docker kill CONTAINER_NAME
docker rm CONTAINER_NAME

Docker

docker kill CONTAINER_NAME
docker rm CONTAINER_NAME

Podman

podman kill CONTAINER_NAME
podman rm CONTAINER_NAME

Podman

podman kill CONTAINER_NAME
podman rm CONTAINER_NAME

다음 변수를 바꿉니다.

  • CONTAINER_NAME: 컨테이너에 사용한 이름입니다. 예를 들면 my-omni-1입니다.

AlloyDB Omni 컨테이너 만들기

Docker

docker run -d --name CONTAINER_NAME \
-v DATA_DIR:/var/lib/postgresql/data \
-v BACKUP_DIR:/var/lib/postgresql/backups \
-p HOST_PORT:5432 \
--restart=always \
google/alloydbomni:latest

Docker

docker run -d --name CONTAINER_NAME \
-v DATA_DIR:/var/lib/postgresql/data \
-v BACKUP_DIR:/var/lib/postgresql/backups \
-p HOST_PORT:5432 \
--restart=always \
google/alloydbomni:latest

Podman

podman run -d --name CONTAINER_NAME \
-v DATA_DIR:/var/lib/postgresql/data \
-v BACKUP_DIR:/var/lib/postgresql/backups \
-p HOST_PORT:5432 \
--restart=always \
docker.io/google/alloydbomni:latest

Podman

podman run -d --name CONTAINER_NAME \
-v DATA_DIR:/var/lib/postgresql/data \
-v BACKUP_DIR:/var/lib/postgresql/backups \
-p HOST_PORT:5432 \
--restart=always \
docker.io/google/alloydbomni:latest

다음 변수를 바꿉니다.

  • CONTAINER_NAME: 컨테이너에 사용한 이름입니다. 예를 들면 my-omni-1입니다.
  • DATA_DIR: 데이터가 저장된 호스트 디렉터리 경로입니다.
  • BACKUP_DIR: 백업이 저장된 외부 디렉터리 경로
  • HOST_PORT: 컨테이너가 자체 포트 5432를 게시해야 하는 호스트 머신의 TCP 포트입니다. 호스트 머신에서도 PostgreSQL 기본 포트를 사용하려면 5432를 지정합니다.

AlloyDB Omni가 시작되었는지 확인

Docker

docker logs -f CONTAINER_NAME

Docker

docker logs -f CONTAINER_NAME

Podman

podman logs -f CONTAINER_NAME

Podman

podman logs -f CONTAINER_NAME

다음 변수를 바꿉니다.

  • CONTAINER_NAME: 컨테이너에 사용한 이름입니다. 예를 들면 my-omni-1입니다.

기타 옵션

pgBackRest restore 명령어는 다양한 명령줄 옵션을 전달하여 제어할 수 있는 옵션과 기능이 있어 매우 유연합니다. 복원 실행에 대한 전체 가이드는 복원을 참조하세요.