다음 워크플로는 클론하는 데 사용되는 단계를 설명합니다.
- livenessProbe파라미터를 사용 중지한 상태에서 대상 데이터베이스 클러스터에- DBCluster매니페스트 파일을 만들고 적용합니다.
- Cloud Storage 백업에 액세스할 pgbackrest.conf파일을 만들고 구성합니다.
- pgBackRest명령어를 사용하여 소스 백업에 액세스할 수 있는지 확인합니다.
- pgBackRest명령어를 사용하여 백업을 대상 데이터베이스 클러스터에 복원합니다.
시작하기 전에
- 소스 데이터베이스 클러스터 백업이 저장된 Cloud Storage 버킷의 전체 경로에 액세스할 수 있는지 확인합니다. 이 경로는 소스 데이터베이스 클러스터의 BackupPlan리소스를 만들 때 사용한 경로와 동일합니다.
- 대상 AlloyDB Omni 데이터베이스 클러스터를 만듭니다. Kubernetes에 AlloyDB Omni를 설치하는 방법에 관한 자세한 내용은 데이터베이스 클러스터 만들기를 참고하세요.
- postgres사용자로 데이터베이스에 로그인했는지 확인합니다.
대상 데이터베이스 클러스터에서 데이터베이스 클러스터 만들기
livenessProbe 파라미터를 일시적으로 중지하여 데이터베이스 클러스터를 만듭니다. 복원이 완료되면 livenessProbe 파라미터를 다시 구성합니다.
- DBCluster리소스 매니페스트 파일을 만듭니다.- apiVersion: v1 kind: Secret metadata: name: db-pw-DB_CLUSTER_NAME type: Opaque data: DB_CLUSTER_NAME: "ENCODED_PASSWORD" --- apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBCluster metadata: name: DB_CLUSTER_NAME spec: primarySpec: availabilityOptions: livenessProbe: "Disabled" adminUser: passwordRef: name: db-pw-DB_CLUSTER_NAME resources: cpu: CPU_COUNT memory: MEMORY_SIZE disks: - name: DataDisk size: DISK_SIZE storageClass: standard- 다음을 바꿉니다. - DB_CLUSTER_NAME: 이 데이터베이스 클러스터의 이름입니다(예:- my-db-cluster).
- ENCODED_PASSWORD: 기본- postgres사용자 역할의 데이터베이스 로그인 비밀번호로, base64 문자열로 인코딩됩니다(예:- ChangeMe123의 경우- Q2hhbmdlTWUxMjM=).
- CPU_COUNT: 이 데이터베이스 클러스터의 각 데이터베이스 인스턴스에서 사용할 수 있는 CPU 수입니다.
- MEMORY_SIZE: 이 데이터베이스 클러스터의 데이터베이스 인스턴스당 메모리 양입니다. CPU당 8GB로 설정하는 것이 좋습니다. 예를 들어 이 매니페스트에서 이전에- cpu를- 2로 설정한 경우- memory를- 16Gi로 설정하는 것이 좋습니다.
- DISK_SIZE: 데이터베이스 인스턴스당 디스크 크기입니다(예:- 10Gi).
 
- 매니페스트 파일을 적용합니다. - kubectl apply -f DBCLUSTER_FILENAME- 다음을 바꿉니다. - DBCLUSTER_FILENAME: 이전 단계에서 만든 DBCluster매니페스트 파일의 이름입니다.
 
- DBCLUSTER_FILENAME: 이전 단계에서 만든 
kubectl describe 명령어를 사용하여 데이터베이스 클러스터 리소스가 READY 상태인지 확인합니다.
pgBackRest 파일 구성
대상 데이터베이스 클러스터가 소스 백업이 있는 Cloud Storage 버킷에 액세스할 수 있도록 pgBackRest 파일을 구성합니다.
- 대상 데이터베이스 클러스터에서 데이터베이스 클러스터 포드 세부정보를 찾습니다. - kubectl get pod -l "alloydbomni.internal.dbadmin.goog/dbcluster=<var>DB_CLUSTER_NAME</var>, alloydbomni.internal.dbadmin.goog/task-type=database"- 응답에는 클러스터 데이터베이스 포드의 이름이 포함됩니다. 
- 포드에 로그인합니다. - kubectl exec -ti DATABASE_POD_NAME -- /bin/bash- 다음을 바꿉니다. - DATABASE_POD_NAME: 이전 단계의 데이터베이스 클러스터 포드의 이름입니다.
 
- pgBackRest구성 파일을 업데이트하기 전에 pod를 중지합니다.- supervisorctl.par stop postgres
- Cloud Storage에 저장된 백업에 액세스할 - pgBackRest구성 파일을 만듭니다.- cat << EOF > /backup/pgbackrest.conf [db] pg1-path=/mnt/disks/pgsql/data 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: 소스 데이터베이스 클러스터의- BackupPlan리소스 매니페스트 파일을 만들 때 만든 Cloud Storage 버킷의 이름입니다. 이는 버킷의 전체 URL이 아닙니다. 버킷 이름에- gs://프리픽스를 추가하지 마세요.
- GCS_SOURCE_BACKUP_BUCKET_PATH: AlloyDB Omni Operator가 소스 데이터베이스 클러스터의 Cloud Storage 버킷 내에 백업을 작성하는 디렉터리의 경로입니다. 경로는- /로 시작하는 절대 경로여야 합니다.
 - repo1-gcs-key-type는 인스턴스의 서비스 계정을 사용하도록- auto로 설정됩니다. 다른 옵션에 관한 자세한 내용은 GCS 저장소 키 유형 옵션을 참고하세요.
대상 데이터베이스 클러스터에서 소스 백업 확인
pgBackRest 명령어를 실행하여 대상 데이터베이스 클러스터에서 소스 데이터베이스 클러스터 백업에 액세스할 수 있는지 확인합니다.
pgbackrest --config-path=/backup --stanza=db --repo=1 info다음은 샘플 응답입니다.
  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=/backup --stanza=db --repo=1 restore --set=20240213-231400F --type=immediate --target-action=promote --delta --link-all --log-level-console=info
- 특정 시점 데이터 복원 - pgbackrest --config-path=/backup --stanza=db --repo=1 restore --target="2024-01-22 11:27:22" --type=time --target-action=promote --delta --link-all --log-level-console=info
포드 다시 시작
복원 명령어가 완료되면 postgres 프로세스를 시작할 수 있습니다.
supervisorctl.par start postgrespostgres 프로세스가 시작되면 기본 인스턴스에 연결하고 쿼리를 실행하여 백업에서 데이터가 복원되었는지 확인할 수 있습니다. 자세한 내용은 Kubernetes에서 실행되는 AlloyDB Omni에 연결을 참고하세요.
데이터베이스 클러스터 구성
데이터베이스 클러스터를 클론한 후 데이터베이스 클러스터 사양을 구성합니다. 가장 중요한 것은 다음 명령어를 사용하여 livenessProbe 매개변수를 사용 설정하는 것입니다.
    kubectl patch dbcluster DBCLUSTER_FILENAME --type merge -p '{"spec":{"primarySpec":{"availabilityOptions":{"livenessProbe":"Enabled"}}}}'