특정 시점 복구
IBM Cloud® Databases for MySQL은 지난 7일의 원하는 시간 동안 특정 시점 복구(PITR)를 제공합니다. 배포는 계속해서 점진적으로 백업하고 트랜잭션을 재생하여 7일 동안 필요한 시점에 백업에서 복원된 새 배포를 가져올 수 있습니다.
배포 UI의 백업 탭에는 모든 PITR 정보가 특정 시점 복구 아래에 보관됩니다.
포함된 정보는 PITR의 가장 빠른 시간입니다. CLI를 통해 가장 빠른 복구 지점을 발견하려면 cdb mysql earliest-pitr-timestamp
명령을 사용하십시오.
ibmcloud cdb mysql earliest-pitr-timestamp <deployment 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)로 입력하십시오. 사용 가능한 가장 최근 시간으로만 복원하려면 해당 옵션을 선택합니다. 복원을 클릭하면 복구를 위한 옵션이 나타납니다. 새 배치의 이름을 입력하고 버전, 지역 및 할당된 리소스를 선택하십시오. 복구를 클릭하여 프로세스를 시작하십시오.
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 <SERVICE_INSTANCE_NAME> <service-id> <region> -p '{"point_in_time_recovery_deployment_id":"DEPLOYMENT_ID", "point_in_time_recovery_time":"TIMESTAMP"}'
특정 백업 또는 PITR에 대한 사전 형식화된 명령은 백업의 상세 보기에서 사용할 수 있습니다.
선택적 매개변수는 CLI를 통해 복원할 때 사용할 수 있습니다. 리소스를 사용자 정의해야 하는 경우 이를 사용하거나 새 배치에서 BYOK 암호화를 위해 Key Protect 키를 사용하십시오.
ibmcloud resource service-instance-create <SERVICE_INSTANCE_NAME> <service-id> 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"}'
API에서
리소스 컨트롤러는 데이터베이스 배포의 프로비저닝을 지원하며, 프로비저닝 및 복원은 리소스 컨트롤러 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": "<SERVICE_INSTANCE_NAME>",
"target": "<region>",
"resource_group": "<your-resource-group>",
"resource_plan_id": "<service-id>",
"parameters":{
"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
복구가 로그에 표시되지 않는 두 가지 시나리오가 있습니다.
- 배치에 최근 전체 백업이 있고 백업이 작성된 후 재생되어야 하는 활동이 없는 경우
- 복구 시간을 현재 시간 이후 또는 사용 가능한 최근 특정 시점 복구 지점을 지난 시간으로 입력한 경우
두 경우 모두 일반적으로 복구에 성공하지만 데이터베이스가 복원된 정확한 시간을 확인할 수 있는 항목이 로그에 없을 수 있습니다.