時間點恢復

IBM Cloud® Databases for PostgreSQL提供過去 7 天內任何時間的時間點復原 (PITR)。 部署會執行連續增量備份,並且可以重播交易,將從備份還原的新部署帶到您需要的 7 天時間範圍中的任何點。

部署 UI 的_「備份和復原」標籤將所有 PITR 資訊保留在「時間點復原」_下。

在 PostgreSQL 第 13 版以及更新版本中,在過去七天內還原至特定點時,如果在前次交易之後有還原時間,則還原會失敗,並顯示訊息 recovery ended before configured recovery target is reached。 在 PostgreSQL v13之前,當在過去七天內還原至特定點,並在前次交易之後還原時間時,會使用最新的還原點。 如果您的還原因這個原因而失敗,則 Restore to last available point 或選擇 Restore to a specific point in the last 7 days 的較早日期/時間。

包括的資訊是 PITR 的最早時間。 若要透過 CLI 探索最早的回復點,請使用 cdb postgresql earliest-pitr-timestamp 指令。

ibmcloud cdb postgresql earliest-pitr-timestamp <INSTANCE_NAME_OR_CRN>

若要透過 API 探索最早的回復點,請使用 /deployments/{id}/point_in_time_recovery_data 端點來尋找最早的 PITR 時間。

{
    "point_in_time_recovery_data": {
        "earliest_point_in_time_recovery_time": "2019-09-09T23:16:00Z"
    }
}

回復

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

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

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

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

使用者介面中的回復

若要起始 PITR,請以世界標準時間 (UTC) 輸入您要還原回的時間。 如果您要還原至最近的可用時間,請選取該選項。 按一下「復原」 按鈕會在標籤中顯示新的配置 UI,其中包含復原選項。 輸入服務詳細信息,分配資源,並為新部署設定資料庫版本、加密和端點。 點擊時間點恢復以啟動該過程。

如果您使用 Key Protect 並具有金鑰,則必須使用 CLI 進行回復,並提供指令以方便您使用。

CLI 中的回復

資源控制器支援資料庫部署的配置,配置和復原由資源控制器 CLI 負責。 使用 resource service-instance-create 指令。

若為 PITR,請使用 point_in_time_recovery_timepoint_in_time_recovery_deployment_id 參數。 point_in_time_recovery_deployment_id 是來源部署的 ID,point_in_time_recovery_time 是您要還原至的時間戳記 (以世界標準時間 (UTC) 表示)。 若要還原至最新可用的復原點,請使用 "point_in_time_recovery_time":" "

ibmcloud resource service-instance-create <databases-for-postgresql> <INSTANCE_NAME> <REGION> -p '{"point_in_time_recovery_deployment_id":"DEPLOYMENT_ID", "point_in_time_recovery_time":"TIMESTAMP", "version":" "}'

在備份的詳細視圖中,可以使用特定備份或 PITR 的預先格式化指令。

透過 CLI 還原時,可以使用選用參數。 請使用它們來自訂資源,或在新部署上使用 Key Protect 金鑰進行 BYOK 加密。

ibmcloud resource service-instance-create <databases-for-postgresql> <INSTANCE_NAME> standard <REGION> <--service-endpoints SERVICE_ENDPOINTS_TYPE> -p
'{"point_in_time_recovery_deployment_id":"DEPLOYMENT_ID", "point_in_time_recovery_time":"TIMESTAMP","key_protect_key":"KEY_PROTECT_KEY_CRN", "members_disk_allocation_mb":"DESIRED_DISK_IN_MB", "members_memory_allocation_mb":"DESIRED_MEMORY_IN_MB", "members_cpu_allocation_count":"NUMBER_OF_CORES", "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": "<INSTANCE_NAME_OR_CRN>",
    "target": "<REGION>",
    "resource_group": "<RESOURCE_GROUP>",
    "resource_plan_id": "<SERVICE_ID>"
    "point_in_time_recovery_time":"<TIMESTAMP>",
    "point_in_time_recovery_deployment_id":"<DEPLOYMENT_ID>"
  }'

參數 nametargetresource_groupresource_plan_id 都是必要的。 target 是您要新部署所在的地區,它可以是與來源部署不同的地區。 支援跨地區還原,但將 eu-de 備份還原至另一個地區除外。

若為 PITR,請使用 point_in_time_recovery_timepoint_in_time_recovery_deployment_id 參數。 point_in_time_recovery_deployment_id 是來源部署的 ID,point_in_time_recovery_time 是您要還原至的時間戳記 (以世界標準時間 (UTC) 表示)。 若要還原至最新可用的復原點,請使用 "point_in_time_recovery_time":" "

如果您需要調整資源或使用 Key Protect 金鑰,請將選用參數 key_protect_keymembers_disk_allocation_mbmembers_memory_allocation_mb 及/或 members_cpu_allocation_count 及其值新增至要求內文。

驗證 PITR

若要驗證正確的回復時間,請檢查資料庫日誌。 檢查資料庫日誌需要在您的部署上設定 日誌記錄整合

當您執行回復時,會從最近的增量備份還原您的資料。 WAL 日誌中任何未完成的交易都會用來還原您的資料庫,直到您回復至為止。 在完成回復並執行交易之後,日誌會顯示訊息。 您可以使用以下命令檢查日誌中是否包含該訊息:

LOG:  last completed transaction was at log time 2019-09-03 19:40:48.997696+00

在兩個實務範例中,回復未顯示在日誌中。

  1. 您的部署具有最近的完整備份,而且在取得備份之後沒有需要重播的活動。
  2. 如果您輸入要回復至的時間是 晚於 現行時間,或已超過最新可用的復原點回復點。

在這兩種情況下,回復通常仍會順利完成,但日誌中不會有項目可檢查資料庫還原至的確切時間。