IBM Cloud Docs
특정 시점 복구

특정 시점 복구

IBM Cloud® Databases for PostgreSQL은 지난 7일의 원하는 시간 동안 특정 시점 복구(PITR)를 제공합니다. 배치는 지속적인 증분 백업을 수행하며 트랜잭션을 재생하여 백업에서 복원된 새 배치를 필요한 해당 7일 기간의 임의 시점으로 가져올 수 있습니다.

배포 UI의 백업 및 복원 탭에는 모든 PITR 정보가 특정 시점 복구 아래에 보관됩니다.

PostgreSQL 버전 13이상에서는 마지막 트랜잭션 이후의 복원 시간을 사용하여 최근 7일내에 특정 지점으로 복원할 때 recovery ended before configured recovery target is reached 메시지와 함께 복원에 실패합니다. PostgreSQL v13이전에는 마지막 트랜잭션 이후의 복원 시간을 사용하여 최근 7일내에 특정 지점으로 복원할 때 최신 복원 지점이 사용되었습니다. 이러한 이유로 복원에 실패하는 경우 Restore to last available point 또는 Restore to a specific point in the last 7 days 에 대해 이전 날짜/시간을 선택하십시오.

포함된 정보는 PITR의 가장 빠른 시간입니다. CLI를 통해 가장 빠른 복구 지점을 발견하려면 cdb postgresql earliest-pitr-timestamp 명령을 사용하십시오.

ibmcloud cdb postgresql earliest-pitr-timestamp <INSTANCE_NAME_OR_CRN>

API를 통해 가장 빠른 복구 지점을 검색하려면 /deployments/{id}/point_in_time_recovery_data 엔드포인트를 사용하여 가장 빠른 PITR 시간을 찾으십시오.

{
    "point_in_time_recovery_data": {
        "earliest_point_in_time_recovery_time": "2019-09-09T23:16:00Z"
    }
}

복구

백업이 새 배치로 복원됩니다. 새 배치가 프로비저닝을 완료한 후 백업 파일의 데이터가 새 배치로 복원됩니다. 백업은 API를 통해서만 그리고 복원을 실행 중인 사용자가 소스와 대상 계정 모두에 액세스할 수 있는 경우에만 계정 전체에서 복원될 수 있습니다.

기본적으로 새 배치는 복원하고 있는 백업을 작성할 때의 소스 배치와 동일한 디스크 및 메모리 할당으로 크기가 자동 지정됩니다. 특히 배치의 현재 크기가 아닐 수도 있는 PITR의 경우. 새 배치에 할당된 리소스를 조정해야 하는 경우 UI, CLI 또는 API의 선택적 필드를 사용하여 새 배치의 크기를 조정하십시오. 데이터 및 워크로드에 대해 충분히 할당하십시오. 배치에 충분한 리소스가 제공되지 않으면 복원에 실패합니다.

스토리지 및 메모리는 소스 배치와 동일하게 복원되지만 특정 인스턴스 구성은 새 인스턴스에 대해 자동으로 설정되지 않습니다. 이 경우 복원 후에 구성을 재실행해야 할 수도 있습니다. 복원을 완료한 후 인스턴스가 정확히 설정되도록 복원 실행 전에 인스턴스 수정사항(shared_buffers, max_connections, deadlock_timeout, archive_timeout 등의 매개변수)을 기록해 두십시오.

백업이 복원되는 동안 소스 배치를 삭제하지 않는 것이 중요합니다. 이전 배치를 삭제하기 전에 새 배치가 프로비저닝되고 백업이 복원될 때까지 기다려야 합니다. 배포를 삭제하면 해당 백업도 삭제되므로 복원이 실패할 뿐만 아니라 백업도 복구하지 못할 수 있습니다.

UI에서 복구

PITR을 시작하려면 복원할 시간을 다시 협정 세계시(UTC)로 입력하십시오. 사용 가능한 가장 최근 시간으로 복원하려면 해당 옵션을 선택하십시오. 복원 버튼을 클릭하면 복구 옵션이 있는 탭에 새 프로비저닝 UI가 나타납니다. 서비스 세부 정보를 입력하고, 리소스를 할당하고, 새 배포를 위한 데이터베이스 버전, 암호화 및 엔드포인트를 설정하세요. 시점 복구를 클릭하여 프로세스를 시작합니다.

Key Protect 사용 중이고 키가 있는 경우 CLI를 사용하여 복구해야 하며, 사용자의 편의를 위해 명령이 제공됩니다.

CLI에서 복구

리소스 제어기는 데이터베이스 배치의 프로비저닝을 지원하며 프로비저닝 및 복원은 리소스 제어기 CLI의 책임입니다. resource service-instance-create 명령을 사용하십시오.

PITR의 경우 point_in_time_recovery_timepoint_in_time_recovery_deployment_id 매개변수를 사용하십시오. point_in_time_recovery_deployment_id은(는) 소스 배치 ID이고 point_in_time_recovery_time은(는) 복원하려는 협정 세계시(UTC)의 시간소인입니다. 사용 가능한 최신 특정 시점으로 복원하려면 "point_in_time_recovery_time":" "을(를) 사용하십시오.

ibmcloud resource service-instance-create <databases-for-postgresql> <INSTANCE_NAME> <REGION> -p '{"point_in_time_recovery_deployment_id":"DEPLOYMENT_ID", "point_in_time_recovery_time":"TIMESTAMP", "version":" "}'

특정 백업 또는 PITR에 대한 사전 형식화된 명령은 백업의 상세 보기에서 사용할 수 있습니다.

CLI를 통해 복원하는 경우 선택적 매개변수를 사용할 수 있습니다. 리소스를 사용자 정의해야 하는 경우 이를 사용하거나 새 배치에서 BYOK 암호화를 위해 Key Protect 키를 사용하십시오.

ibmcloud resource service-instance-create <databases-for-postgresql> <INSTANCE_NAME> standard <REGION> <--service-endpoints SERVICE_ENDPOINTS_TYPE> -p
'{"point_in_time_recovery_deployment_id":"DEPLOYMENT_ID", "point_in_time_recovery_time":"TIMESTAMP","key_protect_key":"KEY_PROTECT_KEY_CRN", "members_disk_allocation_mb":"DESIRED_DISK_IN_MB", "members_memory_allocation_mb":"DESIRED_MEMORY_IN_MB", "members_cpu_allocation_count":"NUMBER_OF_CORES", "version":" "}'

API의 복구

리소스 제어기는 데이터베이스 배치의 프로비저닝을 지원하며 프로비저닝 및 복원은 리소스 제어기 API의 책임입니다. 백업에서 복원하는 데 리소스 제어기를 사용하려면 먼저 리소스 제어기 API를 사용하는 데 필요한 단계를 완료해야 합니다.

모든 정보가 있으면 작성 요청은 /resource_instances 엔드포인트에 대한 POST입니다.

curl -X POST \
  https://resource-controller.cloud.ibm.com/v2/resource_instances \
  -H 'Authorization: Bearer <>' \
  -H 'Content-Type: application/json' \
    -d '{
    "name": "<INSTANCE_NAME_OR_CRN>",
    "target": "<REGION>",
    "resource_group": "<RESOURCE_GROUP>",
    "resource_plan_id": "<SERVICE_ID>"
    "point_in_time_recovery_time":"<TIMESTAMP>",
    "point_in_time_recovery_deployment_id":"<DEPLOYMENT_ID>"
  }'

name, target, resource_groupresource_plan_id 매개변수는 모두 필수입니다. target은 새 배치가 있게 될 지역이며 소스 배치와 다른 지역입니다. eu-de 백업을 다른 지역으로 복원하는 경우를 제외하고 상호 지역 복원이 지원됩니다.

PITR의 경우 point_in_time_recovery_timepoint_in_time_recovery_deployment_id 매개변수를 사용하십시오. point_in_time_recovery_deployment_id은(는) 소스 배치 ID이고 point_in_time_recovery_time은(는) 복원하려는 협정 세계시(UTC)의 시간소인입니다. 사용 가능한 최신 특정 시점으로 복원하려면 "point_in_time_recovery_time":" "을(를) 사용하십시오.

리소스를 조정하거나 Key Protect 키를 사용해야 하는 경우 선택적 매개변수 key_protect_key, members_disk_allocation_mb, members_memory_allocation_mb 및/또는 members_cpu_allocation_count와 해당 값을 요청의 본문에 추가하십시오.

PITR 확인

올바른 복구 시간을 확인하려면 데이터베이스 로그를 확인하십시오. 데이터베이스 로그를 확인하려면 배치에 로깅 통합이 설정되어야 합니다.

복구를 수행할 때 데이터가 가장 최근의 증가분 백업에서 복원됩니다. WAL 로그의 미해결 트랜잭션은 사용자가 복구할 때까지 데이터베이스를 복원하는 데 사용됩니다. 복구가 완료되고 트랜잭션이 실행된 후 로그에 메시지가 표시됩니다. 다음 명령어로 로그에 해당 메시지가 있는지 확인할 수 있습니다:

LOG:  last completed transaction was at log time 2019-09-03 19:40:48.997696+00

복구가 로그에 표시되지 않는 두 가지 시나리오가 있습니다.

  1. 배치에 최근 전체 백업이 있고 백업이 작성된 후 재생되어야 하는 활동이 없는 경우
  2. 복구 시간을 현재 시간 이후 또는 사용 가능한 최근 특정 시점 복구 지점을 지난 시간으로 입력한 경우

두 경우 모두 일반적으로 복구에 성공하지만 데이터베이스가 복원된 정확한 시간을 확인할 수 있는 항목이 로그에 없을 수 있습니다.