다음 워크플로는 클론 단계를 설명합니다.
- Cloud Storage 백업에 액세스할 pgbackrest.conf파일을 구성합니다.
- pgBackRest명령어를 사용하여 소스 백업에 액세스할 수 있는지 확인합니다.
- pgBackRest명령어를 사용하여 백업을 대상 서버에 복원합니다.
시작하기 전에
- 소스 데이터베이스 클러스터 백업이 있는 Cloud Storage 버킷의 전체 경로에 대한 액세스 권한 이 경로는 소스 데이터베이스 클러스터의 BackupPlan리소스를 만들 때 사용한 경로와 동일합니다.
- 단일 서버 타겟 AlloyDB Omni 데이터베이스 클러스터가 생성됩니다. Kubernetes에 AlloyDB Omni를 설치하는 방법에 관한 자세한 내용은 AlloyDB Omni 설치를 참고하세요.
- postgres사용자로 데이터베이스에 로그인했는지 확인합니다.
대상 서버에서 pgBackRest 파일 구성
대상 데이터베이스 클러스터가 소스 백업이 있는 Cloud Storage 버킷에 액세스할 수 있도록 pgBackRest 파일을 구성합니다.
- 타겟 서버에서 - alloydb-data디렉터리로 이동합니다.
- 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-type는 인스턴스의 서비스 계정을 사용하도록- auto로 설정됩니다. 다른 옵션에 관한 자세한 내용은 GCS 저장소 키 유형 옵션을 참고하세요.
- GCS_SOURCE_BACKUP_BUCKET_NAME: 소스 데이터베이스 클러스터에서 만든 Cloud Storage 
대상 서버에서 소스 백업 확인
대상 서버에 로그인하고 pgBackRest 명령어를 실행하여 대상 서버에서 소스 데이터베이스 클러스터 백업에 액세스할 수 있는지 확인합니다.
Docker
sudo docker exec CONTAINER_NAME pgbackrest --config-path=/mnt/disks/pgsql --stanza=db --repo=1 infoPodman
sudo podman exec CONTAINER_NAME pgbackrest --config-path=/mnt/disks/pgsql --stanza=db --repo=1 infoCONTAINER_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 디렉터리로 데이터를 복사할 수 있습니다.
- 타겟 서버에서 데이터베이스 서비스를 중지합니다.
Docker
docker stop CONTAINER_NAMEPodman
podman stop CONTAINER_NAME- 권장사항으로 현재 데이터 디렉터리의 이름을 다른 이름으로 바꿉니다. - mv ~/alloydb-data/data ~/alloydb-data/data-old
- data-restored임시 디렉터리의 이름을 현재 데이터 디렉터리로 바꿉니다.- mv ~/alloydb-data/data-restored ~/alloydb-data/data
- 복원된 데이터를 로드하도록 - 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'- 타겟 서버에서 데이터베이스 서비스를 시작합니다. - Docker- docker start CONTAINER_NAME- Podman- podman start CONTAINER_NAME
데이터베이스 서비스가 시작되면 기본 인스턴스에 연결하고 쿼리를 실행하여 백업에서 데이터가 복원되었는지 확인할 수 있습니다. 자세한 내용은 단일 서버에서 AlloyDB Omni에 연결을 참고하세요.