RPM Orchestrator를 사용하여 데이터 백업 및 복원

문서 버전을 선택합니다.

데이터를 보호하기 위해 AlloyDB Omni는 선언적 매니페스트를 사용하여 자동 데이터 백업 및 복구를 제공합니다. AlloyDB Omni 오케스트레이터는 alloydbctl 및 Ansible과 함께 작동하여 이러한 매니페스트 구성을 적용하고 Cloud Storage, 표준 Amazon S3 버킷 또는 MinIO와 같은 S3 호환 소프트웨어로의 백업을 자동화합니다.

AlloyDB Omni 지속적 백업 및 복구를 사용 설정하려면 각 데이터베이스 클러스터에 백업 계획을 만들어야 합니다. 백업은 BackupPlan 리소스에 정의된 백업 일정에 따라 실행됩니다. 백업 리소스 또는 복구 기간 내 임의의 타임스탬프에서 초 단위로 상세하게 복원할 수 있습니다.

AlloyDB Omni는 매니페스트를 통해 자동 백업 및 복구를 관리합니다.

  • BackupPlan: 각 데이터베이스 클러스터에는 백업 등급에 따라 구성과 일정이 다른 하나 이상의 BackupPlan 매니페스트가 있을 수 있습니다.
  • Backup: BackupPlan 매니페스트에 따라 전체, 차등 또는 증분 백업을 시작합니다.
  • Restore: 특정 백업 또는 특정 시점을 사용하여 데이터베이스 클러스터의 인플레이스 복원을 시작합니다.

시작하기 전에

백업 계획을 설정하고 구성하기 전에 다음 사항을 확인하세요.

  • 백업 스토리지 위치: AlloyDB Omni는 다음 스토리지 옵션 중 하나에 백업을 저장합니다.

    • Cloud Storage: Cloud Storage 버킷입니다. 버킷을 만드는 방법은 버킷 만들기를 참고하세요.
    • Amazon S3: Amazon S3 버킷입니다. S3 버킷을 만드는 방법은 버킷 만들기를 참고하세요.
    • S3 호환 스토리지: MinIO와 같은 S3 호환 소프트웨어의 버킷입니다. MinIO 버킷을 만드는 방법은 MinIO 문서를 참고하세요.
  • 인증 사용자 인증 정보: 스토리지 옵션에 Amazon S3, MinIO 또는 특정 서비스 계정이 있는 Cloud Storage와 같은 인증 키가 필요한 경우 백업 계획을 만들기 전에 이러한 사용자 인증 정보가 포함된 Secret 리소스를 만들어야 합니다. 자세한 내용은 스토리지를 인증하는 보안 비밀 리소스 만들기를 참고하세요.

스토리지 인증을 위한 보안 비밀 리소스 만들기

사용하는 스토리지에 인증이 필요한 경우 백업 계획을 만들기 전에 Secret 리소스를 만들어야 합니다.

Cloud Storage용 보안 비밀 리소스 만들기

  1. 해당 버킷에 백업을 추가할 서비스 계정을 만듭니다.
  2. 버킷의 서비스 계정에 roles/storage.objectAdmin Identity and Access Management 역할을 부여합니다.
  3. JSON 형식으로 서비스 계정 키를 생성합니다.
  4. 다운로드한 JSON 키 파일의 콘텐츠를 base64로 인코딩합니다. base64 -w 0을 실행하거나 인코딩된 텍스트가 연속된 단일 줄인지 확인합니다.
  5. Secret 리소스 매니페스트를 만듭니다. data 섹션의 키 이름은 key.json이어야 합니다.

    Secret:
      metadata:
        name: SECRET_NAME
      spec:
        type: Opaque
        data:
          key.json: "BASE64_ENCODED_JSON_KEY"
    

    다음을 바꿉니다.

    • SECRET_NAME: Secret 리소스의 이름입니다.
    • BASE64_ENCODED_JSON_KEY: 서비스 계정 JSON 키 파일의 base64로 인코딩된 콘텐츠입니다.

S3 또는 S3 규격 스토리지를 위한 보안 비밀 리소스 만들기

  1. S3 액세스 키 ID를 base64로 인코딩합니다.
  2. S3 보안 비밀 액세스 키를 base64로 인코딩합니다.
  3. Secret 리소스 매니페스트를 만듭니다. data 섹션의 키 이름은 access-key-id 및 access-key여야 합니다.

    Secret:
      metadata:
        name: SECRET_NAME
      spec:
        type: Opaque
        data:
          access-key-id: "BASE64_ENCODED_ACCESS_KEY_ID"
          access-key: "BASE64_ENCODED_SECRET_ACCESS_KEY"
    

    다음을 바꿉니다.

    • SECRET_NAME: Secret 리소스의 이름입니다.
    • BASE64_ENCODED_ACCESS_KEY_ID: base64로 인코딩된 S3 액세스 키 ID입니다.
    • BASE64_ENCODED_SECRET_ACCESS_KEY: base64로 인코딩된 S3 보안 액세스 키입니다.

보안 비밀 리소스 적용

BackupPlan 매니페스트를 적용하기 전에 Secret 리소스 매니페스트를 적용합니다. 다음 방법 중 하나를 사용하여 Secret 리소스 매니페스트를 적용할 수 있습니다.

alloydbctl

alloydbctl를 사용하여 Secret 리소스 매니페스트를 적용하려면 다음 명령어를 실행합니다.

alloydbctl apply -d "DEPLOYMENT_SPEC_PATH" -r "SECRET_MANIFEST"

다음 변수를 바꿉니다.

  • DEPLOYMENT_SPEC_PATH: AlloyDB Omni 구성요소 설치에서 만든 배포 사양의 경로입니다.
  • SECRET_MANIFEST: 생성한 Secret 리소스 매니페스트의 경로입니다.

Ansible

Ansible을 사용하여 Secret 리소스 매니페스트를 적용하려면 다음 단계를 완료하세요.

  1. Secret 리소스 매니페스트의 플레이북을 만듭니다.

    - name: Create Secret
      hosts: localhost
      become: true
      vars:
        ansible_user: ANSIBLE_USER
        ansible_ssh_private_key_file: ANSIBLE_SSH_PRIVATE_KEY_FILE
      roles:
        - role: google.alloydbomni_orchestrator.backup
    

    다음 변수를 바꿉니다.

    • ANSIBLE_USER: Ansible이 AlloyDB Omni 노드에 로그인하는 데 사용하는 OS 사용자입니다.
    • ANSIBLE_SSH_PRIVATE_KEY_FILE: Ansible이 SSH를 사용하여 AlloyDB Omni 노드에 연결하는 데 사용하는 비공개 키입니다.
  2. Secret 리소스 매니페스트를 적용합니다.

    ansible-playbook SECRET_PLAYBOOK -i "DEPLOYMENT_SPEC_PATH" \
      -e resource_spec="SECRET_MANIFEST"

    다음 변수를 바꿉니다.

    • SECRET_PLAYBOOK: Secret 리소스 매니페스트를 위해 만든 플레이북의 경로입니다.
    • DEPLOYMENT_SPEC_PATH: AlloyDB Omni 구성요소 설치에서 만든 배포 사양의 경로입니다.
    • SECRET_MANIFEST: 생성한 Secret 리소스 매니페스트의 경로입니다.

백업 계획 만들기

  1. 스토리지 옵션의 형식을 사용하여 BackupPlan 매니페스트를 만듭니다.

    Cloud Storage

    gcsOptions 필드는 필수 입력란입니다.

    BackupPlan:
      metadata:
        name: BACKUP_PLAN_NAME
      spec:
        dbclusterRef: DBCLUSTER_NAME
        backupLocation:
          type: GCS
          gcsOptions:
            bucket: BUCKET_NAME
            key: BUCKET_PATH
            secretRef:
              name: SECRET_NAME
        backupRetainDays: RETAIN_DAYS
        backupSchedules:
          full: "FULL_SCHEDULE"
          differential: "DIFF_SCHEDULE"
          incremental: "INC_SCHEDULE"
    

    다음 변수를 바꿉니다.

    • BACKUP_PLAN_NAME: BackupPlan 매니페스트의 이름입니다. 예를 들면 my-backup-plan-1입니다.

    • DBCLUSTER_NAME: 클러스터 만들기에서 정의한 데이터베이스 클러스터의 이름입니다.

    • BUCKET_NAME: 만든 Cloud Storage 버킷의 이름입니다.

    • BUCKET_PATH: 백업이 기록되어야 하는 Cloud Storage의 디렉터리 경로입니다. /로 시작하는 절대 경로를 제공해야 합니다. 예를 들면 /backups입니다.

    • SECRET_NAME (선택사항): 인증 키를 저장하는 Secret 리소스의 이름입니다.

    • RETAIN_DAYS(선택사항): 백업이 자동으로 삭제되기 전 백업을 보존할 일수입니다.

    • FULL_SCHEDULE(선택사항): 전체 백업의 크론 일정 표현식입니다. 예를 들면 0 2 * * *입니다.

    • DIFF_SCHEDULE(선택사항): 차등 백업의 크론 일정 표현식입니다. 예를 들면 0 2 * * *입니다.

    • INC_SCHEDULE(선택사항): 증분 백업의 cron 일정 표현식입니다. 예를 들면 0 2 * * *입니다.

    Amazon S3 또는 S3 호환

    s3Options 필드는 필수 입력란입니다.

    BackupPlan:
      metadata:
        name: BACKUP_PLAN_NAME
      spec:
        dbclusterRef: DBCLUSTER_NAME
        backupLocation:
          type: S3
          s3Options:
            bucket: BUCKET_NAME
            key: BUCKET_PATH
            endpoint: ENDPOINT_URL
            region: REGION
            secretRef:
              name: SECRET_NAME
        backupRetainDays: RETAIN_DAYS
        backupSchedules:
          full: "FULL_SCHEDULE"
          differential: "DIFF_SCHEDULE"
          incremental: "INC_SCHEDULE"
    

    다음 변수를 바꿉니다.

    • BACKUP_PLAN_NAME: BackupPlan 매니페스트의 이름입니다. 예를 들면 my-backup-plan-1입니다.

    • DBCLUSTER_NAME: 클러스터 만들기에서 정의한 데이터베이스 클러스터의 이름입니다.

    • BUCKET_NAME: 생성한 S3 버킷의 이름입니다.

    • BUCKET_PATH: 백업이 작성되어야 하는 S3 버킷의 디렉터리 경로입니다. /로 시작하는 절대 경로를 제공해야 합니다. 예를 들면 /backups입니다.

    • ENDPOINT_URL: MinIO와 같은 S3 호환 소프트웨어에 연결하기 위한 맞춤 엔드포인트 URL입니다. 예를 들면 http://minio.example.com:9000입니다. Amazon S3 버킷의 경우 엔드포인트 URL을 제공할 필요가 없습니다.

    • REGION_ (선택사항): 스토리지 버킷의 리전입니다. 리전 유효성 검사가 적용되는 표준 Amazon S3 버킷 또는 S3 규격 소프트웨어에 연결할 때 필요합니다.

    • SECRET_NAME: 이전에 만들었고 ACCESS_KEY_ID 및 SECRET_ACCESS_KEY를 포함하는 Secret 리소스에 대한 참조입니다.

    • RETAIN_DAYS(선택사항): 백업이 자동으로 삭제되기 전 백업을 보존할 일수입니다.

    • FULL_SCHEDULE(선택사항): 전체 백업의 크론 일정 표현식입니다. 예를 들면 0 2 * * *입니다.

    • DIFF_SCHEDULE(선택사항): 차등 백업의 크론 일정 표현식입니다. 예를 들면 0 2 * * *입니다.

    • INC_SCHEDULE(선택사항): 증분 백업의 cron 일정 표현식입니다. 예를 들면 0 2 * * *입니다.

  2. 다음 방법 중 하나를 사용하여 백업 계획을 적용합니다.

    alloydbctl

    1. BackupPlan 리소스를 적용합니다.

      alloydbctl apply -d "DEPLOYMENT_SPEC_PATH" -r "BACKUP_PLAN_MANIFEST"

      다음 변수를 바꿉니다.

      • DEPLOYMENT_SPEC_PATH: AlloyDB Omni 구성요소 설치에서 만든 배포 사양의 경로입니다.

      • BACKUP_PLAN_MANIFEST: 이전에 만든 BackupPlan 매니페스트의 경로입니다.

    2. BackupPlan 매니페스트의 상태 필드 status.phase이 Ready인지 확인합니다. 매니페스트가 준비되지 않은 경우 다음을 수행합니다.

      alloydbctl get -d "DEPLOYMENT_SPEC_PATH" -t BackupPlan -n BACKUP_PLAN_NAME -o yaml

    Ansible

    1. BackupPlan 매니페스트의 플레이북을 만듭니다.

      - name: BACKUP_PLAN_PLAYBOOK_NAME
        hosts: localhost
        vars:
          ansible_user: ANSIBLE_USER
          ansible_ssh_private_key_file: ANSIBLE_SSH_PRIVATE_KEY_FILE
        roles:
          - role: google.alloydbomni_orchestrator.backup
      

      다음 변수를 바꿉니다.

      • BACKUP_PLAN_PLAYBOOK_NAME: Ansible 플레이북의 이름입니다. 예를 들면 My BackupPlan입니다. 다음 단계에서 필요하므로 플레이북의 경로를 기록해 둡니다.

      • ANSIBLE_USER: Ansible이 AlloyDB Omni 노드에 로그인하는 데 사용하는 OS 사용자의 이름입니다.

      • ANSIBLE_SSH_PRIVATE_KEY_FILE: Ansible이 SSH를 사용하여 AlloyDB Omni 노드에 연결하는 데 사용하는 비공개 키입니다.

    2. BackupPlan 리소스를 적용합니다.

      ansible-playbook BACKUP_PLAN_PLAYBOOK -i "DEPLOYMENT_SPEC_PATH" \
        -e resource_spec="BACKUP_PLAN_MANIFEST"

      다음 변수를 바꿉니다.

      • BACKUP_PLAN_PLAYBOOK: 이전에 BackupPlan 매니페스트에 대해 만든 플레이북의 경로입니다.

      • DEPLOYMENT_SPEC_PATH: AlloyDB Omni 구성요소 설치에서 만든 배포 사양의 경로입니다.

      • BACKUP_PLAN_MANIFEST: 이전에 만든 BackupPlan 매니페스트의 경로입니다.

    3. 아직 만들지 않았다면 status.yaml 플레이북을 만듭니다. 플레이북을 만드는 방법에 대한 자세한 내용은 상태 보기 및 백업 리소스 나열을 참고하세요.

    4. BackupPlan 매니페스트의 상태 필드 status.phase이 Ready인지 확인합니다. 매니페스트가 준비되지 않은 경우 다음을 수행합니다.

      ansible-playbook status.yaml -i "DEPLOYMENT_SPEC_PATH" -e resource_type=BackupPlan \
        -e resource_name=BACKUP_PLAN_NAME

백업 계획 업데이트

백업 일정을 변경하거나, 보관 기간을 수정하거나, 예약 백업을 일시중지하도록 백업 계획을 업데이트하려면 BackupPlan 매니페스트를 수정한 후 다시 적용하세요.

  1. 백업 계획 만들기에서 만든 BackupPlan 매니페스트를 엽니다.

  2. 업데이트할 필드를 수정합니다.

    • 백업 일정을 업데이트하려면 backupSchedules 아래의 cron 표현식을 수정합니다.
    • 보관 기간을 업데이트하려면 backupRetainDays을 수정합니다.
    • 예약된 백업을 일시중지하려면 spec 섹션에 paused 필드를 추가하고 true로 설정합니다. 백업을 재개하려면 필드를 false로 설정하거나 필드를 삭제하세요.

    예를 들어 다음 예에서는 보관 기간을 30로 업데이트하고, full 및 differential 일정을 수정하고, incremental 일정을 추가하고, 백업 계획을 일시중지합니다.

    BackupPlan:
      metadata:
        name: BACKUP_PLAN_NAME
      spec:
        dbclusterRef: DBCLUSTER_NAME
        backupLocation:
          type: GCS
          gcsOptions:
            bucket: BUCKET_NAME
            key: BUCKET_PATH
            secretRef:
              name: SECRET_NAME
        backupRetainDays: 30
        backupSchedules:
          full: "0 4 * * *"
          differential: "0 0 * * 0"
          incremental: "0 12 * * *"
        paused: true
    
  3. 다음 방법 중 하나를 사용하여 업데이트된 백업 계획을 적용합니다.

    alloydbctl

    1. BackupPlan 리소스를 적용합니다.

      alloydbctl apply -d "DEPLOYMENT_SPEC_PATH" -r "BACKUP_PLAN_MANIFEST"

      다음 변수를 바꿉니다.

      • DEPLOYMENT_SPEC_PATH: AlloyDB Omni 구성요소 설치에서 만든 배포 사양의 경로입니다.

      • BACKUP_PLAN_MANIFEST: 수정된 BackupPlan 매니페스트의 경로입니다.

    2. BackupPlan 매니페스트의 상태 필드 status.phase이 Ready인지 확인합니다. 매니페스트가 준비되지 않은 경우 다음을 수행합니다.

      alloydbctl get -d "DEPLOYMENT_SPEC_PATH" -t BackupPlan -n BACKUP_PLAN_NAME -o yaml

    Ansible

    1. 백업 계획 만들기에서 만든 플레이북을 사용하여 업데이트된 BackupPlan 리소스를 적용합니다.

      ansible-playbook BACKUP_PLAN_PLAYBOOK -i "DEPLOYMENT_SPEC_PATH" \
        -e resource_spec="BACKUP_PLAN_MANIFEST"

      다음 변수를 바꿉니다.

      • BACKUP_PLAN_PLAYBOOK: BackupPlan 매니페스트를 위해 만든 플레이북의 경로입니다.

      • DEPLOYMENT_SPEC_PATH: AlloyDB Omni 구성요소 설치에서 만든 배포 사양의 경로입니다.

      • BACKUP_PLAN_MANIFEST: 수정된 BackupPlan 매니페스트의 경로입니다.

    2. 아직 만들지 않았다면 status.yaml 플레이북을 만듭니다. 플레이북을 만드는 방법에 대한 자세한 내용은 상태 보기 및 백업 리소스 나열을 참고하세요.

    3. BackupPlan 매니페스트의 상태 필드 status.phase이 Ready인지 확인합니다. 매니페스트가 준비되지 않은 경우 준비될 때까지 기다린 후 확인합니다.

      ansible-playbook status.yaml -i "DEPLOYMENT_SPEC_PATH" -e resource_type=BackupPlan \
        -e resource_name=BACKUP_PLAN_NAME

백업 계획 삭제

백업 계획을 삭제하려면 다음 방법 중 하나를 사용하세요.

alloydbctl

alloydbctl delete -d "DEPLOYMENT_SPEC_PATH" -t BackupPlan -n BACKUP_PLAN_NAME

다음 변수를 바꿉니다.

  • DEPLOYMENT_SPEC_PATH: AlloyDB Omni 구성요소 설치에서 만든 배포 사양의 경로입니다.

  • BACKUP_PLAN_NAME: 삭제할 BackupPlan 매니페스트의 이름입니다.

Ansible

  1. BackupPlan 매니페스트를 삭제하는 플레이북을 만듭니다.

    - name: BACKUP_PLAN_DELETE_PLAYBOOK_NAME
      hosts: localhost
      vars:
        ansible_user: ANSIBLE_USER
        ansible_ssh_private_key_file: ANSIBLE_SSH_PRIVATE_KEY_FILE
      roles:
        - role: google.alloydbomni_orchestrator.delete
    

    다음 변수를 바꿉니다.

    • BACKUP_PLAN_DELETE_PLAYBOOK_NAME: Ansible 플레이북의 이름입니다.

    • ANSIBLE_USER: Ansible이 AlloyDB Omni 노드에 로그인하는 데 사용하는 OS 사용자입니다.

    • ANSIBLE_SSH_PRIVATE_KEY_FILE: Ansible이 SSH를 사용하여 AlloyDB Omni 노드에 연결하는 데 사용하는 비공개 키입니다.

  2. ansible-playbook를 실행하여 BackupPlan 매니페스트를 삭제합니다.

    ansible-playbook BACKUP_PLAN_DELETE_PLAYBOOK_NAME -i "DEPLOYMENT_SPEC_PATH" -e resource_type=BackupPlan \
      -e resource_name=BACKUP_PLAN_NAME

    다음 변수를 바꿉니다.

    • BACKUP_PLAN_DELETE_PLAYBOOK_NAME: 이전 단계에서 BackupPlan 매니페스트를 삭제하기 위해 만든 플레이북의 경로입니다.

    • DEPLOYMENT_SPEC_PATH: AlloyDB Omni 구성요소 설치에서 만든 배포 사양의 경로

    • BACKUP_PLAN_NAME: 삭제할 BackupPlan 매니페스트의 이름입니다.

백업 만들기

백업을 만들고 시작하려면 다음 방법 중 하나를 사용하세요.

alloydbctl

  1. 다음 형식을 사용하여 Backup 매니페스트를 만듭니다.

    Backup:
      metadata:
        name: BACKUP_NAME
      spec:
        backupPlanRef: BACKUP_PLAN_NAME
        dbclusterRef: DBCLUSTER_NAME
        type: full
    

    다음 변수를 바꿉니다.

    • BACKUP_NAME: Backup 매니페스트의 이름입니다. 예를 들면 my-backup-1입니다.

    • BACKUP_PLAN_NAME: 이전에 만든 BackupPlan 매니페스트의 이름입니다. 예를 들면 my-backup-plan-1입니다.

    • DBCLUSTER_NAME: 클러스터 만들기에서 정의한 데이터베이스 클러스터의 이름입니다.

    • type (선택사항): full, diff 또는 incr로 설정할 수 있는 백업 실행 유형입니다. 기본값은 full입니다.

  2. Backup 매니페스트를 적용합니다.

    alloydbctl apply -d "DEPLOYMENT_SPEC_PATH" -r "BACKUP_MANIFEST"

    다음 변수를 바꿉니다.

    • DEPLOYMENT_SPEC_PATH: AlloyDB Omni 구성요소 설치에서 만든 배포 사양의 경로

    • BACKUP_MANIFEST: 이전에 만든 Backup 매니페스트의 경로입니다.

  3. Backup 매니페스트의 상태 필드 status.phase이 Succeeded인지 확인합니다. 매니페스트가 아직 성공하지 않은 경우 다음을 기다립니다.

    alloydbctl get -d "DEPLOYMENT_SPEC_PATH" -t Backup -n BACKUP_NAME -o yaml
  4. /backup/db 폴더가 있는지 확인하여 버킷에서 백업 파일을 사용할 수 있는지 확인합니다.

Ansible

  1. 다음 형식을 사용하여 Backup 매니페스트를 만듭니다.

    Backup:
      metadata:
        name: BACKUP_NAME
      spec:
        backupPlanRef: BACKUP_PLAN_NAME
        dbclusterRef: DBCLUSTER_NAME
        type: full
    

    다음 변수를 바꿉니다.

    • BACKUP_NAME: Backup 매니페스트의 이름입니다. 예를 들면 my-backup-1입니다.

    • BACKUP_PLAN_NAME: 이전에 만든 BackupPlan 매니페스트의 이름입니다. 예를 들면 my-backup-plan-1입니다.

    • DBCLUSTER_NAME: 클러스터 만들기에서 정의한 데이터베이스 클러스터의 이름입니다.

    • type (선택사항): full, diff 또는 incr로 설정할 수 있는 백업 실행 유형입니다. 기본값은 full입니다.

  2. Backup 매니페스트의 플레이북을 만듭니다.

    - name: BACKUP_PLAYBOOK_NAME
      hosts: localhost
      vars:
        ansible_user: ANSIBLE_USER
        ansible_ssh_private_key_file: ANSIBLE_SSH_PRIVATE_KEY_FILE
      roles:
        - role: google.alloydbomni_orchestrator.backup
    

    다음 변수를 바꿉니다.

    • BACKUP_PLAYBOOK_NAME: Ansible 플레이북의 이름입니다. 예를 들면 My Backup입니다.

    • ANSIBLE_USER: Ansible이 AlloyDB Omni 노드에 로그인하는 데 사용하는 OS 사용자의 이름입니다.

    • ANSIBLE_SSH_PRIVATE_KEY_FILE: Ansible이 SSH를 사용하여 AlloyDB Omni 노드에 연결하는 데 사용하는 비공개 키입니다.

  3. Backup 매니페스트를 적용합니다.

    ansible-playbook BACKUP_PLAYBOOK -i "DEPLOYMENT_SPEC_PATH" \
      -e resource_spec="BACKUP_MANIFEST"

    다음 변수를 바꿉니다.

    • BACKUP_PLAYBOOK: 이전에 만든 Backup 매니페스트를 위해 만든 플레이북의 경로입니다.

    • DEPLOYMENT_SPEC_PATH: AlloyDB Omni 구성요소 설치에서 만든 배포 사양의 경로입니다.

    • BACKUP_MANIFEST: 이전에 만든 Backup 매니페스트의 경로입니다.

  4. 아직 만들지 않았다면 status.yaml 플레이북을 만듭니다. 플레이북을 만드는 방법에 대한 자세한 내용은 상태 보기 및 백업 리소스 나열을 참고하세요.

  5. Backup 매니페스트의 상태 필드 status.phase이 Succeeded인지 확인합니다. 매니페스트가 성공하지 못한 경우 확인 전에 성공할 때까지 기다립니다.

    ansible-playbook status.yaml -i "DEPLOYMENT_SPEC_PATH" -e resource_type=Backup \
      -e resource_name=BACKUP_NAME
  6. /backup/db 폴더가 있는지 확인하여 버킷에서 백업 파일을 사용할 수 있는지 확인합니다.

백업 삭제

백업을 삭제하려면 다음 명령어 중 하나를 실행합니다.

alloydbctl

alloydbctl delete -d "DEPLOYMENT_SPEC_PATH" -t Backup -n BACKUP_NAME

다음 변수를 바꿉니다.

  • DEPLOYMENT_SPEC_PATH: AlloyDB Omni 구성요소 설치에서 만든 배포 사양의 경로입니다.

  • BACKUP_NAME: 삭제할 Backup 매니페스트의 이름입니다.

Ansible

  1. Backup 매니페스트를 삭제하는 플레이북을 만듭니다.

    - name: BACKUP_DELETE_PLAYBOOK_NAME
      hosts: localhost
      vars:
        ansible_user: ANSIBLE_USER
        ansible_ssh_private_key_file: ANSIBLE_SSH_PRIVATE_KEY_FILE
      roles:
        - role: google.alloydbomni_orchestrator.delete
    

    다음 변수를 바꿉니다.

    • BACKUP_DELETE_PLAYBOOK_NAME: Ansible 플레이북의 이름입니다.

    • ANSIBLE_USER: Ansible이 AlloyDB Omni 노드에 로그인하는 데 사용하는 OS 사용자입니다.

    • ANSIBLE_SSH_PRIVATE_KEY_FILE: Ansible이 SSH를 사용하여 AlloyDB Omni 노드에 연결하는 데 사용하는 비공개 키입니다.

  2. ansible-playbook를 실행하여 Backup 매니페스트를 삭제합니다.

    ansible-playbook BACKUP_DELETE_PLAYBOOK -i "DEPLOYMENT_SPEC_PATH" -e resource_type=Backup \
      -e resource_name=BACKUP_NAME

    다음 변수를 바꿉니다.

    • BACKUP_DELETE_PLAYBOOK: 이전 단계에서 Backup 매니페스트를 삭제하기 위해 만든 플레이북의 경로입니다.

    • DEPLOYMENT_SPEC_PATH: AlloyDB Omni 구성요소 설치에서 만든 배포 사양의 경로입니다.

    • BACKUP_NAME: 삭제할 Backup 매니페스트의 이름입니다.

백업 또는 특정 시점 (PITR)에서 복원

백업에서 데이터를 복원하려면 Restore 매니페스트를 적용하세요. RPM 오케스트레이터는 복제된 클러스터를 스핀업하거나 수동 스크립트 실행을 요구하지 않고 대상 데이터베이스 클러스터를 직접 수정하는 인플레이스 복구를 실행합니다.

백업에서 복원하려면 다음 방법 중 하나를 사용하세요.

alloydbctl

  1. 다음 형식을 사용하여 Restore 매니페스트를 만듭니다.

    • 특정 이름 지정된 백업 실행에서 복원하려면 다음 단계를 따르세요.
    Restore:
      metadata:
        name: RESTORE_NAME
      spec:
        sourceDBCluster: DBCLUSTER_NAME
        backup: BACKUP_NAME
    
    • 특정 시점 복원 (PITR)을 수행하려면 다음 단계를 따르세요.

      Restore:
        metadata:
          name: RESTORE_NAME
        spec:
          sourceDBCluster: DBCLUSTER_NAME
          pointInTime: "TIMESTAMP"
      

    다음 변수를 바꿉니다.

    • RESTORE_NAME: 이 Restore 매니페스트의 이름입니다. 예를 들면 my-restore-1입니다.

    • DBCLUSTER_NAME: 현재 위치에서 복구할 타겟 데이터베이스 클러스터의 이름입니다.

    • BACKUP_NAME: 복원할 완료된 Backup 매니페스트의 이름입니다.

    • TIMESTAMP: 복구할 정확한 시점을 식별하는 RFC 3339 타임스탬프입니다. 예를 들면 2026-06-19T14:30:00Z입니다.

  2. Restore 매니페스트를 적용합니다.

    alloydbctl apply -d "DEPLOYMENT_SPEC_PATH" -r "RESTORE_MANIFEST"

    다음 변수를 바꿉니다.

    • DEPLOYMENT_SPEC_PATH: AlloyDB Omni 구성요소 설치에서 만든 배포 사양의 경로입니다.

    • RESTORE_MANIFEST: 1단계에서 만든 Restore 매니페스트 사양 파일의 경로입니다.

  3. Restore 매니페스트의 status.phase가 Succeeded로 전환되는지 확인합니다.

    alloydbctl get -d "DEPLOYMENT_SPEC_PATH" -t Restore -n RESTORE_NAME -o yaml

Ansible

  1. 다음 형식을 사용하여 Restore 매니페스트를 만듭니다.

    • 특정 이름 지정된 백업 실행에서 복원하려면 다음 단계를 따르세요.
    Restore:
      metadata:
        name: RESTORE_NAME
      spec:
        sourceDBCluster: DBCLUSTER_NAME
        backup: BACKUP_NAME
    
    • 특정 시점 복원 (PITR)을 수행하려면 다음 단계를 따르세요.

      Restore:
        metadata:
          name: RESTORE_NAME
        spec:
          sourceDBCluster: DBCLUSTER_NAME
          pointInTime: "TIMESTAMP"
      

    다음 변수를 바꿉니다.

    • RESTORE_NAME: 이 Restore 매니페스트의 이름입니다. 예를 들면 my-restore-1입니다.

    • DBCLUSTER_NAME: 현재 위치에서 복구할 타겟 데이터베이스 클러스터의 이름입니다.

    • BACKUP_NAME: 복원할 완료된 Backup 매니페스트의 이름입니다.

    • TIMESTAMP: 복구할 정확한 시점을 식별하는 RFC 3339 타임스탬프입니다. 예를 들면 2026-06-19T14:30:00Z입니다.

  2. Restore 매니페스트의 플레이북을 만듭니다.

    - name: RESTORE_PLAYBOOK_NAME
      hosts: localhost
      vars:
        ansible_user: ANSIBLE_USER
        ansible_ssh_private_key_file: ANSIBLE_SSH_PRIVATE_KEY_FILE
      roles:
        - role: google.alloydbomni_orchestrator.restore
    

    다음 변수를 바꿉니다.

    • RESTORE_PLAYBOOK_NAME: Ansible 플레이북의 이름입니다.

    • ANSIBLE_USER: Ansible이 AlloyDB Omni 노드에 로그인하는 데 사용하는 OS 사용자입니다.

    • ANSIBLE_SSH_PRIVATE_KEY_FILE: Ansible이 SSH를 사용하여 AlloyDB Omni 노드에 연결하는 데 사용하는 비공개 키입니다.

  3. Restore 매니페스트를 적용합니다.

    ansible-playbook RESTORE_PLAYBOOK -i "DEPLOYMENT_SPEC_PATH" \
      -e resource_spec="RESTORE_MANIFEST"

    다음 변수를 바꿉니다.

    • RESTORE_PLAYBOOK: 2단계에서 Restore 매니페스트에 대해 만든 플레이북의 경로입니다.

    • DEPLOYMENT_SPEC_PATH: 배포 사양의 경로입니다.

    • RESTORE_MANIFEST: 1단계에서 만든 Restore 매니페스트 사양 파일의 경로입니다.

  4. 아직 만들지 않았다면 status.yaml 플레이북을 만듭니다. 플레이북을 만드는 방법에 대한 자세한 내용은 상태 보기 및 백업 리소스 나열을 참고하세요.

  5. Restore 매니페스트의 status.phase가 Succeeded로 전환되는지 확인합니다.

    ansible-playbook status.yaml -i "DEPLOYMENT_SPEC_PATH" -e resource_type=Restore \
      -e resource_name=RESTORE_NAME

상태 보기 및 백업 리소스 나열

BackupPlan, Backup, Restore 리소스의 상태를 보거나 리소스를 나열하려면 다음 방법 중 하나를 사용하세요.

alloydbctl

특정 유형의 모든 리소스를 나열하려면 alloydbctl get 명령어를 실행합니다.

alloydbctl get -d "DEPLOYMENT_SPEC_PATH" -t RESOURCE_TYPE

특정 리소스의 상태를 보려면 리소스 이름과 출력 형식을 yaml로 설정하여 alloydbctl get 명령어를 실행합니다.

alloydbctl get -d "DEPLOYMENT_SPEC_PATH" -t RESOURCE_TYPE -n RESOURCE_NAME -o yaml

다음 변수를 바꿉니다.

  • DEPLOYMENT_SPEC_PATH: 배포 사양의 경로입니다.
  • RESOURCE_TYPE: 리소스 유형입니다. BackupPlan, Backup 또는 Restore로 설정합니다.
  • RESOURCE_NAME: 상태를 확인하려는 리소스의 이름입니다.

Ansible

Ansible을 사용하여 리소스의 상태를 보거나 리소스를 나열하려면 google.alloydbomni_orchestrator.status 역할을 사용하세요.

  1. 다음 형식을 사용하여 플레이북(예: status.yaml)을 만듭니다.

    - name: Get resource status
      hosts: localhost
      vars:
        ansible_user: ANSIBLE_USER
        ansible_ssh_private_key_file: ANSIBLE_SSH_PRIVATE_KEY_FILE
      roles:
      - role: google.alloydbomni_orchestrator.status
    

    다음 변수를 바꿉니다.

    • ANSIBLE_USER: Ansible이 노드에 로그인하는 데 사용하는 OS 사용자입니다.
    • ANSIBLE_SSH_PRIVATE_KEY_FILE: Ansible이 SSH를 사용하여 노드에 연결하는 데 사용하는 비공개 키입니다.
  2. 플레이북을 실행합니다.

    특정 유형의 모든 리소스를 나열하려면 resource_type 변수를 사용하여 플레이북을 실행합니다.

    ansible-playbook status.yaml -i "DEPLOYMENT_SPEC_PATH" -e resource_type=RESOURCE_TYPE

    특정 리소스의 상태를 보려면 resource_type 및 resource_name 변수를 모두 사용하여 플레이북을 실행합니다.

    ansible-playbook status.yaml -i "DEPLOYMENT_SPEC_PATH" -e resource_type=RESOURCE_TYPE \
      -e resource_name=RESOURCE_NAME

    다음 변수를 바꿉니다.

    • DEPLOYMENT_SPEC_PATH: 배포 사양의 경로입니다.
    • RESOURCE_TYPE: 리소스 유형입니다. BackupPlan, Backup 또는 Restore로 설정합니다.
    • RESOURCE_NAME: 상태를 확인하려는 리소스의 이름입니다.

제한사항

  • BackupPlan 상태에 failed to create stanza (종료 코드 39)이 있는 ConfigurationFailed이 표시되면 버킷에 roles/storage.objectAdmin 역할을 부여하고 매니페스트를 다시 적용하여 조정을 재개할 수 있습니다. BackupPlan을 삭제할 필요는 없습니다.