Cloud Storage 백업을 사용하여 단일 서버에서 데이터베이스 클러스터 클론

이 페이지에서는 Cloud Storage 백업을 사용하여 단일 서버에서 데이터베이스 클러스터를 클론하는 방법을 보여줍니다.

다음 워크플로는 클론 단계를 설명합니다.

  1. Cloud Storage 백업에 액세스하도록 pgbackrest.conf 파일을 구성합니다.
  2. pgBackRest 명령어를 사용하여 소스 백업에 액세스할 수 있는지 확인합니다.
  3. pgBackRest 명령어를 사용하여 백업을 대상 서버에 복원합니다.

시작하기 전에

  • 소스 데이터베이스 클러스터 백업이 있는 Cloud Storage 버킷의 전체 경로에 대한 액세스 권한 이 경로는 소스 데이터베이스 클러스터의 BackupPlan 리소스를 만들 때 사용한 경로와 동일합니다.
  • 단일 서버 대상 AlloyDB Omni 데이터베이스 클러스터가 생성됩니다. Kubernetes에 AlloyDB Omni를 설치하는 방법에 관한 자세한 내용은 AlloyDB Omni 설치를 참고하세요.
  • postgres 사용자로 데이터베이스에 로그인했는지 확인합니다.

대상 서버에서 pgBackRest 파일 구성

대상 데이터베이스 클러스터가 소스 백업이 있는 Cloud Storage 버킷에 액세스할 수 있도록 pgBackRest 파일을 구성합니다.

  1. 대상 서버에서 alloydb-data 디렉터리로 이동합니다.

  2. Cloud Storage에 저장된 백업에 액세스할 pgBackRest 구성 파일을 만듭니다.

      $ cat << EOF > /backup/pgbackrest.conf
      [db]
      pg1-path=/mnt/disks/pgsql/data-restored
      pg1-socket-path=/tmp
      pg1-user=pgbackrest
      [global]
      log-path=/obs/pgbackrest
      log-level-file=info
      repo1-type=gcs
      repo1-gcs-bucket=GCS_SOURCE_BACKUP_BUCKET_NAME
      repo1-path=GCS_SOURCE_BACKUP_BUCKET_PATH
      repo1-storage-ca-file=/etc/ssl/certs/ca-certificates.crt
      repo1-retention-full=9999999
      repo1-gcs-key-type=auto

    다음을 바꿉니다.

    • GCS_SOURCE_BACKUP_BUCKET_NAME: 소스 데이터베이스 클러스터에서 만든 Cloud Storage pgBackRest 버킷의 이름입니다. 이는 버킷의 전체 URL이 아닙니다. 버킷 이름 앞에 gs://를 붙이지 마세요.
    • GCS_SOURCE_BACKUP_BUCKET_PATH: AlloyDB Omni 운영자가 소스 데이터베이스 클러스터의 Cloud Storage 버킷 내에 백업을 작성하는 디렉터리의 경로입니다. 경로는 /로 시작하는 절대 경로여야 합니다.

    인스턴스의 서비스 계정을 사용하도록 repo1-gcs-key-typeauto로 설정됩니다. 다른 옵션에 관한 자세한 내용은 GCS 저장소 키 유형 옵션을 참고하세요.

대상 서버에서 소스 백업 확인

대상 서버에 로그인하고 pgBackRest 명령어를 실행하여 대상 서버에서 소스 데이터베이스 클러스터 백업에 액세스할 수 있는지 확인합니다.

Docker

sudo docker exec CONTAINER_NAME pgbackrest --config-path=/mnt/disks/pgsql --stanza=db --repo=1 info

Podman

sudo podman exec CONTAINER_NAME pgbackrest --config-path=/mnt/disks/pgsql --stanza=db --repo=1 info

CONTAINER_NAME을 새 AlloyDB Omni 컨테이너 이름(예: my-omni-1)으로 바꿉니다.

다음은 샘플 응답입니다.

    stanza: db
      status: ok
      cipher: none
      db (current)
          wal archive min/max (15): 000000010000000000000002/00000001000000000000000D
          full backup: 20240213-231400F
              timestamp start/stop: 2024-02-13 23:14:00+00 / 2024-02-13 23:17:14+00
              wal start/stop: 000000010000000000000003 / 000000010000000000000003
              database size: 38.7MB, database backup size: 38.7MB
              repo1: backup set size: 4.6MB, backup size: 4.6MB
          incr backup: 20240213-231400F_20240214-000001I
              timestamp start/stop: 2024-02-14 00:00:01+00 / 2024-02-14 00:00:05+00
              wal start/stop: 00000001000000000000000D / 00000001000000000000000D
              database size: 38.7MB, database backup size: 488.3KB
              repo1: backup set size: 4.6MB, backup size: 84.2KB
              backup reference list: 20240213-231400F

응답의 타임스탬프는 전체 백업을 복원하거나 복구 기간의 특정 시점부터 복원하는 데 사용됩니다.

대상 서버에서 백업 복원

복원할 백업 또는 시점을 확인한 후 대상 서버에서 pgBackRest 명령어를 실행합니다. 이러한 명령어에 대한 자세한 내용은 복원 명령어를 참고하세요.

다음은 샘플 pgBackRest 복원 명령어입니다.

  • 백업에서 복원

    pgbackrest --config-path=/mnt/disks/pgsql --stanza=db --repo=1 restore --set=20240213-231400F --type=immediate --target-action=promote --delta --link-all --log-level-console=info
  • 특정 시점 데이터 복원

    pgbackrest --config-path=/mnt/disks/pgsql --stanza=db --repo=1 restore --target="2024-01-22 11:27:22" --type=time --target-action=promote --delta --link-all --log-level-console=info

대상 서버에 데이터 복사

복원 명령어가 완료되면 /mnt/disks/pgsql/data-restored 임시 디렉터리에서 현재 /alloydb-data/data 디렉터리로 데이터를 복사할 수 있습니다.

  1. 대상 서버에서 데이터베이스 서비스를 중지합니다.

Docker

docker stop CONTAINER_NAME

Podman

podman stop CONTAINER_NAME
  1. 권장사항으로서 현재 데이터 디렉터리의 이름을 다른 이름으로 바꿉니다.

      mv ~/alloydb-data/data  ~/alloydb-data/data-old
  2. data-restored 임시 디렉터리의 이름을 현재 데이터 디렉터리로 바꿉니다.

      mv ~/alloydb-data/data-restored ~/alloydb-data/data
  3. 복원된 데이터를 로드하도록 postgresql.auto.conf 파일에서 pg1-path 값을 업데이트합니다.

    vim ~/alloydb-data/data/postgresql.auto.conf
    # Verify postgresql.auto.conf.
    # Do not edit this file manually!
    # It will be overwritten by the ALTER SYSTEM command.
    # Recovery settings generated by pgBackRest restore on 2024-03-13 20:47:11
    restore_command = 'pgbackrest --config-path=/mnt/disks/pgsql --pg1-path=/mnt/disks/pgsql/data --repo=1 --stanza=db archive-get %f "%p"'
    recovery_target = 'immediate'
    recovery_target_action = 'promote'
    recovery_target_timeline = 'current'
  1. 대상 서버에서 데이터베이스 서비스를 시작합니다.

    Docker

    docker start CONTAINER_NAME

    Podman

    podman start CONTAINER_NAME

데이터베이스 서비스가 시작된 후 기본 인스턴스에 연결하고 쿼리를 실행하여 백업에서 데이터가 복원되었는지 확인할 수 있습니다. 자세한 내용은 단일 서버에서 AlloyDB Omni에 연결을 참고하세요.

다음 단계