특정 시점 복구
IBM Cloud® Databases for PostgreSQL 지난 7일 이내의 사용 가능한 복구 지점까지의 특정 시점 복구(PITR)를 지원합니다. PITR은 백업을 새로운 배포 환경으로 복원하고, 요청된 시점까지 보존된 트랜잭션 로그를 재실행합니다.
현장 주요 버전 업그레이드(IPMVU) 이후 발생한 변경 사항에 대한 특정 시점 복구(PITR)를 수행하려면, 업그레이드된 배포 환경과 해당 트랜잭션 로그를 성공적으로 백업해야 합니다. 이 서비스는 업그레이드 작업이 완료된 후 백업이 실행되도록 자동으로 대기열에 추가합니다. 업그레이드된 배포 환경에서 PITR을 활용하기 전에 백업이 성공적으로 완료되었는지 확인하십시오. PITR은 메이저 버전 업그레이드 간에는 트랜잭션을 재실행할 수 없습니다. 자세한 내용은 ‘IPMVU 백업 및 복구’를 참조하십시오.
배포 환경 UI의 ‘백업 및 복원’ 탭에는 ‘시점 복원 (PITR)’ 항목 아래에 모든 PITR 정보가 저장되어 있습니다.
요청된 복원 시점이 사용 가능한 마지막 트랜잭션보다 늦은 경우, 복원 작업은 “ recovery ended before configured recovery target is reached ”라는 메시지와 함께 실패합니다. 이러한 이유로 복원이 실패할 경우, ‘ 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_time 및 point_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_group 및 resource_plan_id 매개변수는 모두 필수입니다. target은 새 배치가 있게 될 지역이며 소스 배치와 다른 지역입니다. eu-de 백업을 다른 지역으로 복원하는 경우를 제외하고 상호 지역 복원이 지원됩니다.
PITR의 경우 point_in_time_recovery_time 및 point_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
복구가 로그에 표시되지 않는 두 가지 시나리오가 있습니다.
- 배치에 최근 전체 백업이 있고 백업이 작성된 후 재생되어야 하는 활동이 없는 경우
- 복구 시간을 현재 시간 이후 또는 사용 가능한 최근 특정 시점 복구 지점을 지난 시간으로 입력한 경우
두 경우 모두 일반적으로 복구에 성공하지만 데이터베이스가 복원된 정확한 시간을 확인할 수 있는 항목이 로그에 없을 수 있습니다.