PITR(point-in-time recovery)로 HL7v2 메시지 복구

이 페이지에서는 PITR(point-in-time recovery)을 사용하여 HL7v2 스토어의 HL7v2 메시지를 지난 21일 이내의 상태로 복구하는 방법을 설명합니다. PITR을 사용하면 HL7v2 메시지를 실수로 삭제한 경우와 같은 원치 않는 변경사항을 복구할 수 있습니다.

시작하기 전에

PITR 요청은 고급 작업 요청으로 분류되며 그에 따라 요금이 청구됩니다. PITR을 사용하기 전에 고급 작업 요청의 가격 책정을 검토하세요.

복구 워크플로

프로덕션 복구가 예상대로 실행되도록 하려면 먼저 테스트 실행을 수행합니다. 테스트 실행은 복구할 HL7v2 메시지의 ID가 포함된 하나 이상의 파일을 출력합니다. 출력 파일이 정확한지 확인한 후에 프로덕션에서 복구를 다시 실행하세요.

특정 HL7v2 메시지를 복구하거나 필터링 기준에 따라 HL7v2 메시지를 복구하려면 필터를 지정합니다.

테스트 실행

프로덕션에서 HL7v2 메시지를 복구하기 전에 테스트 실행을 수행합니다.

다음 샘플은 hl7V2Stores.rollback 메서드를 사용하여 테스트 실행을 수행하는 방법을 보여줍니다.

REST

  1. HL7v2 메시지를 복구합니다.

    테스트 실행을 수행하려면 force 필드가 false인지 확인합니다.

    요청 데이터를 사용하기 전에 다음을 바꿉니다.

    • PROJECT_ID: Google Cloud 프로젝트의 ID
    • LOCATION: 데이터 세트 위치
    • DATASET_ID: HL7v2 저장소의 상위 데이터 세트
    • HL7V2_STORE_ID: HL7v2 저장소 ID
    • RECOVERY_TIMESTAMP: 지난 21일 이내의 복구 지점. RFC 3339 형식을 사용합니다. 시간을 초 단위로 지정하고 시간대를 포함합니다(예: 2015-02-07T13:28:17.239+02:00 또는 2017-01-01T00:00:00Z).
    • CLOUD_STORAGE_BUCKET: 출력 파일이 기록되는 Cloud Storage 폴더 또는 버킷의 정규화된 URI

    요청을 보내려면 다음 옵션 중 하나를 선택합니다.

    curl

    요청 본문을 request.json 파일에 저장합니다. 터미널에서 다음 명령어를 실행하여 현재 디렉터리에 이 파일을 만들거나 덮어씁니다.

    cat > request.json << 'EOF'
    {
      "rollbackTime": "RECOVERY_TIMESTAMP",
      "resultGcsBucket": "gs://CLOUD_STORAGE_BUCKET",
      "force": "false"
    }
    EOF

    그런 후 다음 명령어를 실행하여 REST 요청을 전송합니다.

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID:rollback"

    PowerShell

    요청 본문을 request.json 파일에 저장합니다. 터미널에서 다음 명령어를 실행하여 현재 디렉터리에 이 파일을 만들거나 덮어씁니다.

    @'
    {
      "rollbackTime": "RECOVERY_TIMESTAMP",
      "resultGcsBucket": "gs://CLOUD_STORAGE_BUCKET",
      "force": "false"
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    그런 후 다음 명령어를 실행하여 REST 요청을 전송합니다.

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID:rollback" | Select-Object -Expand Content

    API 탐색기

    요청 본문을 복사하고 메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 요청 본문을 이 도구에 붙여넣고 다른 필수 필드를 입력한 후 실행을 클릭합니다.

    출력은 다음과 같습니다. 응답에는 장기 실행 작업(LRO)의 식별자가 포함됩니다. 장기 실행 작업은 메서드 호출을 완료하는 데 추가 시간이 걸릴 수 있는 경우에 반환됩니다. OPERATION_ID의 값을 확인합니다. 다음 단계에서 이 값이 필요합니다.

  2. projects.locations.datasets.operations.get 메서드를 사용하여 장기 실행 작업의 상태를 가져옵니다.

    요청 데이터를 사용하기 전에 다음을 바꿉니다.

    • PROJECT_ID: Google Cloud 프로젝트의 ID
    • DATASET_ID: 데이터 세트 ID
    • LOCATION: 데이터 세트 위치
    • OPERATION_ID: 장기 실행 작업에서 반환된 ID

    요청을 보내려면 다음 옵션 중 하나를 선택합니다.

    curl

    다음 명령어를 실행합니다.

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"

    PowerShell

    다음 명령어를 실행합니다.

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content

    API 탐색기

    메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.

    출력은 다음과 같습니다. 응답에 "done": true가 포함되었으면 장기 실행 작업이 완료된 것입니다.

테스트 실행 출력 파일 보기

각 테스트 실행은 복구할 HL7v2 메시지의 ID 및 유형이 포함된 하나 이상의 파일을 출력합니다. 대상 Cloud Storage 버킷의 rollback_messages 폴더에 있는 하위 폴더에 파일이 생성됩니다. 하위 폴더 이름은 hl7V2Stores.rollback 응답에서 반환되는 LRO ID입니다. 파일을 확인하고 복구가 예상대로 작동하는지 확인하려면 객체 메타데이터 보기를 참조하세요.

파일 수는 복구된 HL7v2 메시지 수에 비례합니다.

파일 이름은 trial-NUMBER-of-TOTAL_NUMBER.txt 형식을 사용합니다. 여기서 NUMBER는 파일 번호이고 TOTAL_NUMBER는 총 파일 수입니다.

테스트 실행 출력 파일 스키마

테스트 실행 복구의 출력 파일에 사용되는 스키마는 다음 표와 같습니다.

MESSAGE_ID TIMESTAMP
HL7v2 메시지 ID입니다. HL7v2 스토어에서 HL7v2 메시지가 생성되었거나 업데이트된 시간입니다.

프로덕션에서 복구

프로덕션에서 복구하기 전에 테스트 실행을 수행하고 시험 이전 출력 파일을 검사하여 프로덕션 복구가 예상대로 실행되는지 확인합니다.

다음 샘플은 hl7V2Stores.rollback 메서드를 사용하여 프로덕션에서 HL7v2 메시지를 복원하는 방법을 보여줍니다.

REST

  1. HL7v2 메시지를 복구합니다.

    force 필드가 true인지 확인합니다.

    요청 데이터를 사용하기 전에 다음을 바꿉니다.

    • PROJECT_ID: Google Cloud 프로젝트의 ID
    • LOCATION: 데이터 세트 위치
    • DATASET_ID: HL7v2 저장소의 상위 데이터 세트
    • HL7V2_STORE_ID: HL7v2 저장소 ID
    • RECOVERY_TIMESTAMP: 지난 21일 이내의 복구 지점. RFC 3339 형식을 사용합니다. 시간을 초 단위로 지정하고 시간대를 포함합니다(예: 2015-02-07T13:28:17.239+02:00 또는 2017-01-01T00:00:00Z).
    • CLOUD_STORAGE_BUCKET: 출력 파일이 기록되는 Cloud Storage 폴더 또는 버킷의 정규화된 URI

    요청을 보내려면 다음 옵션 중 하나를 선택합니다.

    curl

    요청 본문을 request.json 파일에 저장합니다. 터미널에서 다음 명령어를 실행하여 현재 디렉터리에 이 파일을 만들거나 덮어씁니다.

    cat > request.json << 'EOF'
    {
      "rollbackTime": "RECOVERY_TIMESTAMP",
      "resultGcsBucket": "gs://CLOUD_STORAGE_BUCKET",
      "force": "true"
    }
    EOF

    그런 후 다음 명령어를 실행하여 REST 요청을 전송합니다.

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID:rollback"

    PowerShell

    요청 본문을 request.json 파일에 저장합니다. 터미널에서 다음 명령어를 실행하여 현재 디렉터리에 이 파일을 만들거나 덮어씁니다.

    @'
    {
      "rollbackTime": "RECOVERY_TIMESTAMP",
      "resultGcsBucket": "gs://CLOUD_STORAGE_BUCKET",
      "force": "true"
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    그런 후 다음 명령어를 실행하여 REST 요청을 전송합니다.

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID:rollback" | Select-Object -Expand Content

    API 탐색기

    요청 본문을 복사하고 메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 요청 본문을 이 도구에 붙여넣고 다른 필수 필드를 입력한 후 실행을 클릭합니다.

    출력은 다음과 같습니다. 응답에는 장기 실행 작업(LRO)의 식별자가 포함됩니다. 장기 실행 작업은 메서드 호출을 완료하는 데 추가 시간이 걸릴 수 있는 경우에 반환됩니다. OPERATION_ID의 값을 확인합니다. 다음 단계에서 이 값이 필요합니다.

  2. projects.locations.datasets.operations.get 메서드를 사용하여 장기 실행 작업의 상태를 가져옵니다.

    요청 데이터를 사용하기 전에 다음을 바꿉니다.

    • PROJECT_ID: Google Cloud 프로젝트의 ID
    • DATASET_ID: 데이터 세트 ID
    • LOCATION: 데이터 세트 위치
    • OPERATION_ID: 장기 실행 작업에서 반환된 ID

    요청을 보내려면 다음 옵션 중 하나를 선택합니다.

    curl

    다음 명령어를 실행합니다.

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"

    PowerShell

    다음 명령어를 실행합니다.

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content

    API 탐색기

    메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.

    출력은 다음과 같습니다. 응답에 "done": true가 포함되었으면 장기 실행 작업이 완료된 것입니다.

프로덕션 복구 출력 파일 보기

프로덕션 복구는 다음 파일을 출력합니다. 대상 Cloud Storage 버킷의 rollback_messages 폴더에 있는 하위 폴더에 파일이 생성됩니다. 하위 폴더 이름은 hl7V2Stores.rollback 응답에서 반환되는 LRO ID입니다. 파일을 보려면 객체 메타데이터 보기를 참조하세요.

  • success-NUMBER-of-TOTAL_NUMBER.txt: 성공적으로 복구된 HL7v2 메시지를 포함합니다.
  • fail-NUMBER-of-TOTAL_NUMBER.txt: 복구에 실패한 HL7v2 메시지를 포함합니다. 실패가 없더라도 빈 파일이 생성됩니다.

파일 이름에서 NUMBER는 파일 번호이고 TOTAL_NUMBER는 총 파일 수입니다.

프로덕션 출력 파일 스키마

프로덕션 복구의 성공 및 실패 파일은 다음 스키마를 사용합니다. 오류 파일에는 ERROR_MESSAGE 열이 추가로 포함됩니다.

MESSAGE_ID ERROR_MESSAGE(오류 파일만 해당)
HL7v2 메시지 ID입니다. 오류 파일만 해당. HL7v2 메시지를 복구할 수 없는 이유를 설명합니다.

필터를 사용하여 HL7v2 스토어를 이전 상태로 복원

HL7v2 스토어가 하나 이상의 장기 실행 작업(LRO)으로 수정된 경우 필터에 LRO ID를 지정하여 HL7v2 스토어를 이전 상태로 복원할 수 있습니다. 예를 들어 HL7v2 스토어를 가져오기 작업으로 HL7v2 메시지를 가져오기 전인 이전 상태로 복원할 수 있습니다.

hl7V2Stores.rollback 요청을 보낼 때 RollbackHL7MessagesFilteringFields 객체에 LRO ID를 지정합니다.

Cloud Healthcare API 데이터 세트의 LRO ID를 나열하고 확인하는 방법에 대한 자세한 내용은 LRO 나열을 참조하세요.