時間點恢復 (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_buffers、max_connections、deadlock_timeout、archive_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,例如5c49eabc12fgt65resource_plan_id: 在這種情況下,這是databases-for-mongodb-enterprisetarget:這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_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。