時間點恢復 (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"
    }
}

在此階段,時間點還原時間戳終端點始終返回當前時間** ——約為一週

Snapshot

Enterprise EditionMongoDB 透過由. Ops Manager 維護的 快照提供 PITR。

在特定情況下,即使未支援PITR,仍需 考量PITR相關事項

版本升級後的PITR

版本升級後,新版本的「特定時間點還原」(PITR)功能將無法使用,直到升級後的部署完成初始快照,並由 Ops Manager 進行備份為止。 只有在完成此初始快照後,才可透過「特定時間點還原」功能將資料還原至 主要版本升級後的 某個時間點。 此快照未列於您的可用備份清單中。 僅當該版本仍處於支援期間時,才支援回滾至較早版本(升級後 7 天內)。

在某個版本的快照完成並成功備份之前,該版本的 PITR 功能將暫時無法使用。

回復

備份會還原至新的部署。 在新部署完成佈建之後,備份檔中的資料會還原至新部署。 也可以跨帳戶還原備份,但只能使用 API,且只有在執行還原的使用者同時具有來源及目的地帳戶的存取權時。

在您從中還原備份時,新部署會自動調整為與來源部署相同的磁碟及記憶體配置。 尤其是 PITR,這可能不是您部署的現行大小。 如果您需要調整配置給新部署的資源,請使用使用者介面、CLI 或 API 中的選用欄位來調整新部署的大小。 如果未提供足夠的資源給部署,則還原會失敗,因此請為您的資料及工作量配置足夠的資源。

當儲存體及記憶體還原至與來源部署相同的位置時,不會自動為新實例設定特定的實例配置。 在此情況下,可能需要在還原之後重新執行配置。 請注意在執行還原之前的任何實例修改 (如 shared_buffersmax_connectionsdeadlock_timeoutarchive_timeout 等參數),以確保在還原完成之後實例的精確設定。

在還原備份時,請勿刪除來源部署。 在刪除舊部署之前,您必須等待直到供應新部署並還原備份為止。 刪除部署也會刪除其備份。 因此,不僅還原失敗,您也可能無法回復備份。

透過使用者介面回復

在部署的第一個備份完成之後,復原點回復選項會顯示在使用者介面中。 若要起始 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(自帶金鑰)加密,此欄位是可選的。
  • 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 的必要步驟,然後才能使用它來從備份還原。

取得所有資訊之後,建立要求是對 /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:要部署的新實例的人類可讀名稱,例如 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(自帶金鑰)加密,此欄位是可選的。
  • members_host_flavor:您要部署的實例主機大小。 如果未提供,將使用與來源實例相同的 RAM 和 CPU 建立新實例。 請參閱 桌子 以獲得可用值。

復原點回復時間戳記必須格式化如下: %Y-%m-%dT%H:%M:%SZ

使用 Terraform 還原備份

在還原之前,請確定 point_in_time_recovery_time 未超過一週。 若時間戳記早於7天(精確至秒),驗證即告失敗。

使用 ibm_database_point_in_time_recovery 資料來源,以使用 point_in_time_recovery來還原資料庫實例。

復原點回復時間戳記必須格式化如下: %Y-%m-%dT%H:%M:%SZ

您的 Terraform Script 看起來如下。

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"
}

上述操作將恢復到與來源主機大小和磁碟大小相同的新資料庫。 如果要修改部署的主機大小或磁碟大小,請參閱 地形文檔 以獲得正確的格式。

時間點恢復 (PITR) 離線恢復

IBM Cloud® Databases for MongoDB Enterprise Edition 需要兩個程序來起始還原。 首先,會取得 Ops Manager AppDB的 Snapshot。 然後,此 Snapshot 會充當 PITR 備份,可用來還原資料庫。

在一些 災難復原服務或工作負載從罕見的重大事故和大規模故障(如服務中斷)中恢復的能力。 這包括影響整個區域的實體災難、資料庫損毀或對工作負載有貢獻的服務遺失。 其影響超出了高可用性設計的處理能力。在這種情況下,PITR 過程可能會失敗。 在這種情況下Databases for MongoDBEnterprise Edition時間點復原 (PITR) 離線還原可用於還原到最新的可用快照。 在 Snapshot 方法未如預期運作的情況下,「離線還原」選項可確保資料可用性及系統備援。

透過 UI 進行時間點恢復 (PITR) 離線恢復

透過 IBM Cloud 儀表板起始離線還原,就像您使用標準 PITR 一樣。 選擇第三個時間點回復選項。

透過 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 的必要步驟 來從備份還原之前,請先完成。

取得所有資訊之後,建立要求是對 /resource_instancesPOST,看起來如下:

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