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

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

AlloyDB Omni는 PostgreSQL과 호환되므로 pgBackRest 매뉴얼에 설명된 데이터 복원 명령어와 기법이 AlloyDB Omni에도 적용됩니다. 이 페이지에서는 일반적인 복구 작업을 선택하여 관련 명령어의 예를 보여줍니다.

AlloyDB Omni에서 작동하도록 pgBackRest를 구성하는 방법에 관한 자세한 내용은 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 유틸리티와 같은 대체 방법을 사용하여 버전 간에 데이터베이스를 복사해야 합니다. 자세한 내용은 DMP 파일 내보내기를 참고하세요.

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 명령어는 매우 유연하며 다양한 명령줄 옵션을 전달하여 제어할 수 있는 다양한 옵션과 기능이 있습니다. 복원 실행에 관한 전체 가이드는 복원을 참고하세요.