本页介绍了如何使用时间点恢复 (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 文件夹或存储分区的完全限定 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 ContentAPI Explorer
复制请求正文并打开方法参考页面。APIs Explorer 面板会在页面右侧打开。您可以与此工具进行交互以发送请求。 将请求正文粘贴到此工具中,填写任何其他必填字段,然后点击执行。
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 ContentAPI Explorer
打开方法参考页面。APIs Explorer 面板会在页面右侧打开。您可以与此工具进行交互以发送请求。 填写所有必填字段,然后点击执行。
"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
恢复 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 文件夹或存储分区的完全限定 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 ContentAPI Explorer
复制请求正文并打开方法参考页面。APIs Explorer 面板会在页面右侧打开。您可以与此工具进行交互以发送请求。 将请求正文粘贴到此工具中,填写任何其他必填字段,然后点击执行。
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 ContentAPI 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。