특정 시점 복구(PITR)

IBM Cloud® Databases for MongoDB Enterprise Edition 은 사용 가능한 가장 빠른 복구 지점보다 큰 시간소인을 사용하여 PITR을 제공합니다. API를 통해 가장 빠른 복구 지점을 발견하려면 특정 시점 복구 시간소인 엔드포인트 를 사용하십시오.

마지막 트랜잭션 이후의 복원 시간을 사용하여 지난 7일이내에 특정 지점으로 복원하는 경우 recovery ended before configured recovery target is reached 메시지와 함께 복원에 실패합니다. 이러한 이유로 복원에 실패하는 경우 사용 가능한 마지막 지점으로 복원하거나 최근 7일동안 특정 지점으로 복원할 이전 날짜 및 시간을 선택하십시오.

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

이 단계에서 시점 복구 타임스탬프 엔드포인트는 항상 현재 시간 ( 약 1주일 전 )을 반환합니다.

스냅샷

Enterprise EditionMongoDB. Ops Manager 에 의해 유지되는 스냅샷을 통해 PITR을 제공합니다.

PITR이 지원되지 않는 특정 PITR 고려 사항이 있습니다.

버전 업그레이드 후 PITR

버전 업그레이드 후, 업그레이드된 배포 환경에 대한 초기 스냅샷이 완료되고 Ops Manager 을 통해 백업될 때까지는 새 버전에 대한 특정 시점 복구(PITR) 기능을 사용할 수 없습니다. ‘특정 시점 복구’는 이 초기 스냅샷이 완료된 후에야 주요 버전 업그레이드 이후의 시점으로 데이터를 복원할 수 있습니다. 이 스냅샷은 사용 가능한 백업 목록에 포함되어 있지 않습니다. 업그레이드 후 7일 이내에 이전 버전으로 되돌리는 기능은 해당 버전이 여전히 지원되는 경우에만 가능합니다.

PITR은 해당 버전의 스냅샷이 완료되고 백업이 성공적으로 이루어질 때까지 일시적으로 사용할 수 없습니다.

복구

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

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

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

백업이 복원되는 동안 소스 배치를 삭제하지 마십시오. 이전 배치를 삭제하기 전에 새 배치가 프로비저닝되고 백업이 복원될 때까지 기다려야 합니다. 배치를 삭제하면 해당 백업도 삭제됩니다. 따라서 복원에 실패할 뿐만 아니라 백업을 복구하지 못할 수도 있습니다.

UI를 통한 복구

배치의 첫 번째 백업이 완료되면 특정 시점 복구 옵션이 UI에 표시됩니다. PITR을 시작하려면 복원할 시간을 다시 협정 세계시(UTC)로 입력하십시오.

특정 시점 복구 시간소인은 다음과 같이 형식화되어야 합니다. %Y-%m-%dT%H:%M:%SZ.

사용 가능한 가장 최근 시점으로 복원하려면 해당 옵션을 선택하십시오. 복원을 클릭하면 복구를 위한 옵션이 나타납니다. 새 배치의 이름을 입력하고 버전, 지역 및 할당된 리소스를 선택하십시오. 복구를 클릭하여 프로세스를 시작하십시오.

Key Protect 를 사용 중이고 키를 보유하고 계신 경우, 복구를 위해 CLI를 사용해야 하며, 편의를 위해 관련 명령어가 제공됩니다.

CLI를 사용하여 복구

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

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

사용 가능한 매개 변수는 다음과 같습니다:

  • instance_name(필수): 배포할 새 인스턴스의 사람이 읽을 수 있는 이름(예: new-mongo)입니다.
  • service_id(필수): 이 컨텍스트에서는 databases-for-mongodb 입니다.
  • service_plan_name(필수): standard 또는 enterprise.
  • region (필수): 새 데이터베이스가 배포될 IBM Cloud® 영역(예: eu-gb)입니다.
  • point_in_time_recovery_deployment_id (필수): 소스 배포의 ID(CRN이라고도 함)입니다.
  • point_in_time_recovery_time: 백업이 복원되는 시점(형식)%Y-%m-%dT%H:%M:%SZ, 예를 들어,2024-05-10T08:15:00Z. 복원 가능한 최신 지점을 얻으려면 이 필드를 비워 두세요.
  • version: 데이터베이스 버전(예: "6.0 ". 선호하는 최신 버전을 사용하려면 이 필드를 비워 두세요.
  • key_protect_key: ID(CRN) Key Protect 사용된 자원. BYOK(Bring Your Own Key) 암호화의 경우 이 필드는 선택 사항입니다.
  • members_host_flavor: 배포하려는 인스턴스 호스트 크기입니다. 제공되지 않으면 소스 인스턴스와 동일한 RAM 및 CPU를 사용하여 새 인스턴스가 생성됩니다. 사용 가능한 값은 이 를 참조하세요.

ibmcloud resource service-instance-create big-mongo-restore databases-for-mongodb enterprise eu-gb -p '{"point_in_time_recovery_deployment_id":"crn:v1:bluemix:public:databases-for-mongodb:eu-gb:a/f19c0f5eff94b69ae419xyz2345ra7a0ed:3c647ad1-b9a8-2233-a47e-668d8b83e79f::", "members_host_flavor":"b3c.4x16.encrypted", "point_in_time_recovery_time":"", "version":""}'

API를 사용한 복구

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

POST 모든 정보를 확보한 후, 생성 요청은 해당 /resource_instances 엔드포인트로 전송되는 생성 요청입니다.

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: 배포할 새 인스턴스의 사람이 읽을 수 있는 이름입니다. 예:new-mongo.
  • resource_group: 리소스 그룹의 ID입니다. 예:5c49eabc12fgt65
  • resource_plan_id: 이 맥락에서 이것은 databases-for-mongodb-enterprise
  • target: IBM Cloud 새 데이터베이스가 배포될 지역, 예:eu-gb. eu-de 백업을 다른 리전으로 복원하는 경우를 제외하고, 리전 간 복원이 지원됩니다.

추가적으로,parameters 객체는 다음 필드와 함께 제공될 수 있습니다:

  • point_in_time_recovery_deployment_id: 소스 배포의 ID(CRN이라고도 함)입니다.
  • point_in_time_recovery_time: 백업이 복원되는 시점(형식)%Y-%m-%dT%H:%M:%SZ, 예를 들어,2024-05-10T08:15:00Z. 복원 가능한 최신 지점을 얻으려면 이 필드를 비워 두세요.
  • version: 데이터베이스 버전(예: "6.0 ". 선호하는 최신 버전을 사용하려면 이 필드를 비워 두세요.
  • key_protect_key: ID(CRN) Key Protect 사용된 자원. BYOK(Bring Your Own Key) 암호화의 경우 이 필드는 선택 사항입니다.
  • members_host_flavor: 배포하려는 인스턴스 호스트 크기입니다. 제공되지 않으면 소스 인스턴스와 동일한 RAM 및 CPU를 사용하여 새 인스턴스가 생성됩니다. 참조 테이블 사용 가능한 값에 대해

특정 시점 복구 시간소인은 다음과 같이 형식화되어야 합니다. %Y-%m-%dT%H:%M:%SZ.

Terraform을 사용하여 백업 복원

복원하기 전에 point_in_time_recovery_time 가 1주일이하인지 확인하십시오. 타임스탬프가 7일보다 오래된 경우(초 단위까지 포함), 유효성 검사가 실패합니다.

point_in_time_recovery를 사용하여 데이터베이스 인스턴스를 복원하려면 ibm_database_point_in_time_recovery 데이터 소스를 사용하십시오.

특정 시점 복구 시간소인은 다음과 같이 형식화되어야 합니다. %Y-%m-%dT%H:%M:%SZ.

Terraform 스크립트는 다음과 같습니다.

terraform {
  required_providers {
     ibm = {
       version = "1.44.3"
       source  = "IBM-Cloud/ibm"
    }
  }
}
variable "ibmcloud_api_key" {
  description = "<Enter your IBM Cloud API Key>"
}
provider "ibm" {
  region = "us-south"
  ibmcloud_api_key = var.ibmcloud_api_key
}
data "ibm_resource_group" "default_group" {
  is_default = true
}
resource "ibm_database" "mongodb_enterprise" {
  resource_group_id = data.ibm_resource_group.default_group.id
  name              = "testing-mongodb-pitr"
  service           = "databases-for-mongodb"
  plan              = "enterprise"
  location          = "us-south"
  point_in_time_recovery_deployment_id = "<crn>"
  point_in_time_recovery_time = "2022-09-14T14:47:45Z"
}

위의 작업은 소스와 호스트 크기 및 디스크 크기가 동일한 새 데이터베이스로 복원됩니다. 배포의 호스트 크기 또는 디스크 크기를 수정하려면 다음을 참조하세요. Terraform 문서 올바른 형식화를 위해.

특정 시점 복구(PITR) 오프라인 복원

IBM Cloud® Databases for MongoDB Enterprise Edition 은 복원을 시작하기 위해 두 개의 프로세스가 필요합니다. 먼저 Ops Manager AppDB의 스냅샷을 작성합니다. 이 스냅샷은 데이터베이스를 복원하는 데 사용할 수 있는 PITR 백업 역할을 합니다.

일부에서는 재해 복구서비스 중단과 같은 드물지만 심각한 사고와 광범위한 장애로부터 복구할 수 있는 서비스 또는 작업량 능력. 여기에는 전체 지역에 영향을 미치는 물리적 재해, 데이터베이스 손상, 또는 작업 부하에 기여하는 서비스의 손실이 포함됩니다. 이 영향은 고가용성 설계가 처리할 수 있는 능력을 초과합니다. 시나리오에서는 PITR 프로세스가 실패할 수 있습니다. 그런 경우는 Databases for MongoDB Enterprise Edition PITR(특정 시점 복구) 오프라인 복원을 사용하면 사용 가능한 최신 스냅샷으로 복원할 수 있습니다. 오프라인 복원 옵션은 스냅샷 방법이 예상대로 작동하지 않는 경우 데이터 가용성 및 시스템 복원성을 보장합니다.

UI를 통한 특정 시점 복구(PITR) 오프라인 복원

표준 PITR의 경우와 마찬가지로 IBM Cloud 대시보드를 통해 오프라인 복원을 시작하십시오. 세 번째 특정 시점 복구 옵션을 선택하십시오.

CLI를 통한 특정 시점 복구(PITR) 오프라인 복원

다음과 같은 명령을 사용하여 IBM Cloud CLI를 통해 오프라인 복원을 시작하십시오.

ibmcloud resource service-instance-create big-mongo-restore databases-for-mongodb enterprise eu-gb -p '{"point_in_time_recovery_deployment_id":"crn:v1:bluemix:public:databases-for-mongodb:eu-gb:a/f19c0f5eff94b69ae419xyz2345ra7a0ed:3c647ad1-b9a8-2233-a47e-668d8b83e79f::", "members_host_flavor":"b3c.4x16.encrypted", "point_in_time_recovery_time":"", "version":"", "offline_restore": true}'

다음 매개변수를 지정하십시오.

  • point_in_time_recovery_deployment_id-소스 CRN입니다.
  • point_in_time_recovery_time-이를 공백으로 두십시오 ( "").
  • offline_restore- 이 값을 ‘ true ’로 설정하십시오.

명령어 실행 결과는 다음과 같습니다:

Creating service instance <INSTANCE_NAME> in resource group Default of account <ACCOUNT> as <USER>...
OK
Service instance <INSTANCE_NAME> was created.
Name:                <INSTANCE_NAME>
ID:                  crn:v1:bluemix:public:databases-for-mongodb:eu-gb:a/f19c0f5eff94b69ae419xyz2345ra7a0ed:3c647ad1-b9a8-2233-a47e-668d8b83e79f::
GUID:                3c647ad1-b9a8-2233-a47e-668d8b83e79f
Location:            <LOCATION>
State:               provisioning
Type:                service_instance
Sub Type:            Public
Service Endpoints:   public
Allow Cleanup:       false
Locked:              false
Created at:          2023-08-03T09:36:37Z
Updated at:          2023-08-03T09:36:41Z
Last Operation:
                     Status    create in progress
                     Message   Started create instance operation

특정 시점 복구 시간소인은 다음과 같이 형식화되어야 합니다. %Y-%m-%dT%H:%M:%SZ.

API를 통한 특정 시점 복구(PITR) 오프라인 복원

리소스 제어기는 데이터베이스 배치의 프로비저닝을 지원하며 프로비저닝 및 복원은 리소스 제어기 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-ID>",
    "resource_plan_id": "<SERVICE-ID>",
    "parameters": {
      "point_in_time_recovery_time":"<TIMESTAMP>",
      "point_in_time_recovery_deployment_id":"<DEPLOYMENT_ID>",
      "offline_restore": true
    }
  }'

다음 매개변수를 지정하십시오.

  • point_in_time_recovery_deployment_id-소스 CRN입니다.
  • point_in_time_recovery_time-이를 공백으로 두십시오 ( "").
  • offline_restore- 이 값을 ‘ true ’로 설정하십시오.

특정 시점 복구 시간소인은 다음과 같이 형식화되어야 합니다. %Y-%m-%dT%H:%M:%SZ.