本頁說明如何使用時間點復原 (PITR) 功能,將 HL7v2 儲存庫中的 HL7v2 訊息復原至過去 21 天內某個時間點的狀態。您可以透過 PITR 從非預期的變更中復原,例如誤刪 HL7v2 訊息。
事前準備
PITR 要求會歸類為進階作業要求,並據此計費。使用 PITR 前,請先查看進階作業要求的定價。
復原工作流程
為確保正式版復原作業能順利執行,請先進行模擬測試。 模擬執行會輸出一或多個檔案,其中包含要復原的 HL7v2 訊息 ID。請先確認輸出檔案是否正確,再於正式環境中再次執行復原作業。
如要復原特定 HL7v2 訊息,或根據篩選條件復原 HL7v2 訊息,請指定篩選器。
執行模擬測試
在正式環境中還原 HL7v2 訊息前,請先執行模擬測試。
下列範例說明如何使用 hl7V2Stores.rollback
方法進行試執行。
REST
復原 HL7v2 訊息。
如要執行模擬測試,請確認
force
欄位為false
。使用任何要求資料之前,請先替換以下項目:
PROJECT_ID
:您的 Google Cloud 專案 IDLOCATION
:資料集位置DATASET_ID
:HL7v2 存放區的父項資料集HL7V2_STORE_ID
:HL7v2 儲存庫 IDRECOVERY_TIMESTAMP
:過去 21 天內的復原點。請使用 RFC 3339 格式。指定時間 (精確到秒) 並加入時區,例如2015-02-07T13:28:17.239+02:00
或2017-01-01T00:00:00Z
。CLOUD_STORAGE_BUCKET
:輸出檔案寫入的 Cloud Storage 資料夾或 bucket 完整 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 ContentAPIs Explorer
複製要求內文並開啟方法參考資料頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。將要求內文貼到這項工具中,並填妥其他必填欄位,然後按一下「Execute」(執行)。
OPERATION_ID
的值。您會在下一個步驟中用到這個值。使用
projects.locations.datasets.operations.get
方法取得長時間執行的作業狀態。使用任何要求資料之前,請先替換以下項目:
PROJECT_ID
:您的 Google Cloud 專案 IDDATASET_ID
:資料集 IDLOCATION
:資料集位置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 ContentAPIs Explorer
開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」。
"done": true
,表示長時間執行的作業已完成。
查看模擬測試輸出檔案
每次試運都會輸出一個或多個檔案,內含要復原的 HL7v2 訊息 ID 和類型。檔案會建立在目標 Cloud Storage bucket 的 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
復原 HL7v2 訊息。
確認
force
欄位為true
。使用任何要求資料之前,請先替換以下項目:
PROJECT_ID
:您的 Google Cloud 專案 IDLOCATION
:資料集位置DATASET_ID
:HL7v2 存放區的父項資料集HL7V2_STORE_ID
:HL7v2 儲存庫 IDRECOVERY_TIMESTAMP
:過去 21 天內的復原點。請使用 RFC 3339 格式。指定時間 (精確到秒) 並加入時區,例如2015-02-07T13:28:17.239+02:00
或2017-01-01T00:00:00Z
。CLOUD_STORAGE_BUCKET
:輸出檔案寫入的 Cloud Storage 資料夾或 bucket 完整 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 ContentAPIs Explorer
複製要求內文並開啟方法參考資料頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。將要求內文貼到這項工具中,並填妥其他必填欄位,然後按一下「Execute」(執行)。
OPERATION_ID
的值。您會在下一個步驟中用到這個值。使用
projects.locations.datasets.operations.get
方法取得長時間執行的作業狀態。使用任何要求資料之前,請先替換以下項目:
PROJECT_ID
:您的 Google Cloud 專案 IDDATASET_ID
:資料集 IDLOCATION
:資料集位置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 ContentAPIs Explorer
開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」。
"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。