復原點回復

IBM Cloud® Databases for MySQL 提供過去 7 天內任何時間的「復原點回復 (PITR)」。 部署會持續漸進式備份,並且可以重播交易,以將從備份還原的新部署帶到您需要的 7 天時間範圍中的任何點。

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

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

ibmcloud cdb mysql earliest-pitr-timestamp <deployment 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) 輸入您要還原回的時間。 如果您只想還原至最近的可用時間,請選取該選項。 按一下 還原 會啟動回復的選項。 輸入名稱,選取新部署的版本、區域及已配置資源。 按一下「還原」以開始此程序。

如果您使用 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 <SERVICE_INSTANCE_NAME> <service-id> <region> -p '{"point_in_time_recovery_deployment_id":"DEPLOYMENT_ID", "point_in_time_recovery_time":"TIMESTAMP"}'

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

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

ibmcloud resource service-instance-create <SERVICE_INSTANCE_NAME> <service-id> 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"}'

在 API 中

資源控制器 支援佈建資料庫部署,而佈建及還原是資源控制器 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>"
    }
  }'

參數 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. 如果您輸入要回復至的時間是 晚於 現行時間,或已超過最新可用的復原點回復點。

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