時間點恢復
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_time 及 point_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>"
}'
參數 name、target、resource_group 和 resource_plan_id 都是必要的。 target 是您要新部署所在的地區,它可以是與來源部署不同的地區。 支援跨地區還原,但將 eu-de 備份還原至另一個地區除外。
若為 PITR,請使用 point_in_time_recovery_time 及 point_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_key、members_disk_allocation_mb、members_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
在兩個實務範例中,回復未顯示在日誌中。
- 您的部署具有最近的完整備份,而且在取得備份之後沒有需要重播的活動。
- 如果您輸入要回復至的時間是 晚於 現行時間,或已超過最新可用的復原點回復點。
在這兩種情況下,回復通常仍會順利完成,但日誌中不會有項目可檢查資料庫還原至的確切時間。