Share via


執行時間點還原

使用時間點還原 (PITR),將資料庫建立為在保留期間內過去某個時間另一個資料庫的複本。 本文說明如何在 Azure Arc 所啟用的 SQL 受控執行個體中執行資料庫的時間點還原。

時間點還原可以還原資料庫:

  • 從現有的資料庫
  • 在 Azure Arc 所啟用的相同 SQL 受控執行個體上建立新的資料庫

您可以將資料庫還原至預先設定保留設定內的某個時間點。 您可以如下所示,檢查 Azure Arc 所啟用的 SQL 受控執行個體的保留設定:

針對直接連線模式:

az sql mi-arc show --name <SQL instance name> --resource-group <resource-group>
#Example
az sql mi-arc show --name sqlmi --resource-group myresourcegroup

針對間接連線模式:

az sql mi-arc show --name <SQL instance name> --k8s-namespace <SQL MI namespace> --use-k8s
#Example
az sql mi-arc show --name sqlmi --k8s-namespace arc --use-k8s

時間點還原目前可以還原資料庫:

  • 從執行個體上的現有資料庫
  • 若要在相同執行個體上建立新的資料庫

自動備份

Azure Arc 所啟用的 SQL 受控執行個體已啟用內建自動備份功能。 每當您建立或還原新的資料庫時,Azure Arc 所啟用的 SQL 受控執行個體會立即起始完整備份,並自動排程差異和交易記錄備份。 SQL 受控執行個體會將這些備份儲存在部署期間指定的儲存類別中。

時間點還原可讓資料庫還原至保留期間內的特定時間點。 若要將資料庫還原至特定時間點,已啟用 Azure Arc 的資料服務會依特定順序套用備份檔案。 例如:

  1. 完整備份
  2. 差異備份
  3. 一或多個交易記錄備份

Point-in-time restore

目前,完整備份會每週進行一次,差異備份每隔 12 小時進行一次,而交易記錄備份每隔 5 分鐘進行一次。

保留週期

Azure Arc 所啟用的新 SQL 受控執行個體的預設保留期限為七天,且可使用值 0 或 1-35 天加以調整。 您可以藉由指定 --retention-days 屬性,在部署 SQL 受控執行個體期間設定保留期間。 早於設定保留期限的備份檔案會自動刪除。

使用 az CLI 從時間點建立資料庫

az sql midb-arc restore --managed-instance <SQL managed instance> --name <source DB name> --dest-name <Name for new db> --k8s-namespace <namespace of managed instance> --time "YYYY-MM-DDTHH:MM:SSZ" --use-k8s
#Example
az sql midb-arc restore --managed-instance sqlmi1 --name Testdb1 --dest-name mynewdb --k8s-namespace arc --time "2021-10-29T01:42:14.00Z" --use-k8s

您也可以使用 --dry-run 選項來驗證還原作業,而不需要實際還原資料庫。

az sql midb-arc restore --managed-instance <SQL managed instance> --name <source DB name> --dest-name <Name for new db> --k8s-namespace <namespace of managed instance> --time "YYYY-MM-DDTHH:MM:SSZ" --use-k8s --dry-run
#Example
az sql midb-arc restore --managed-instance sqlmi1 --name Testdb1 --dest-name mynewdb --k8s-namespace arc --time "2021-10-29T01:42:14.00Z" --use-k8s --dry-run

使用 kubectl 從時間點建立資料庫

  1. 若要使用 Kubernetes 原生工具執行時間點還原,您可以使用 kubectl。 建立工作規格 yaml 檔案。 例如:

    apiVersion: tasks.sql.arcdata.microsoft.com/v1
    kind: SqlManagedInstanceRestoreTask                 
    metadata:                                       
      name: myrestoretask20220304
      namespace: test                              
    spec:                                           
      source:                                       
        name: miarc1                                
        database: testdb                            
      restorePoint: "2021-10-12T18:35:33Z"          
      destination:                                  
        name: miarc1                           
        database: testdb-pitr
      dryRun: false  
    
  2. 如下所示編輯屬性:

    1. name: 每個自訂資源 (CR) 的唯一字串。 Kubernetes 的必要項目。
    2. namespace: 執行個體所在的 Kubernetes 命名空間。
    3. source: ... name: 來源執行個體的名稱。
    4. source: ... database: 要從中套用還原的來源資料庫名稱。
    5. restorePoint: UTC 日期時間中還原作業的時間點。
    6. destination: ... name: 目的地已啟用 Arc SQL 受控執行個體的名稱。 目前,只有 Arc SQL 受控執行個體中才支援時間點還原。 這應該與來源 SQL 受控執行個體相同。
    7. destination: ... database: 要將還原套用至其中的新資料庫名稱。
  3. 建立工作以啟動時間點還原。 下列範例會起始 myrestoretask20220304.yaml 中定義的工作。

    kubectl apply -f myrestoretask20220304.yaml
    
  4. 如下所示,檢查還原工作狀態:

    kubectl get sqlmirestoretask -n <namespace>
    

還原工作狀態會根據 PITR 進度約每隔 10 秒更新一次。 狀態會從 Waiting 移至 RestoringCompletedFailed

使用 Azure Data Studio 從時間點建立資料庫

您也可以如下所示,從 Azure Data Studio 將資料庫還原至時間點:

  1. 啟動 Azure Data Studio
  2. 請確定您如工具中所述,具有必要的 Arc 延伸模組。
  3. 連線至 Azure Arc 資料控制器
  4. 展開資料控制器節點,以滑鼠右鍵按一下執行個體,然後選取 [管理]。 Azure Data Studio 會啟動 SQL 受控執行個體儀表板。
  5. 按一下儀表板中的 [備份] 索引標籤
  6. 您應該會看到 SQL 受控執行個體及其最早和最新還原時間範圍上的資料庫清單,以及起始還原的圖示
  7. 按一下您要從中還原之資料庫的圖示。 Azure Data Studio 會在右側啟動刀鋒視窗
  8. 在刀鋒視窗中提供必要的輸入,然後按一下 [還原]

監視進度

起始還原時,會在 Kubernetes 叢集中建立工作,以執行完整、差異和記錄備份的實際還原作業。 您可以如下所示,從 Kubernetes 叢集監視此活動的進度:

kubectl get sqlmirestoretask -n <namespace>
#Example
kubectl get sqlmirestoretask -n arc

您可以藉由在工作上執行 kubectl describe 來取得工作的詳細資料。 例如:

kubectl describe sqlmirestoretask <nameoftask> -n <namespace>

設定保留期間

您可以如下所示,從原始設定重新設定 Azure Arc 所啟用的 SQL 受控執行個體的保留期間:

警告

如果您減少目前的保留期間,就無法還原到比新保留期間還舊的時間點。 在新的保留期間內,不再需要用來提供 PITR 的備份會遭到刪除。 如果您增加目前的保留期間,則無法立即在新的保留期間內還原至較舊的時間點。 當系統開始保留備份較長的時間時,您會在一段時間內取得該功能。

您可以變更 SQL 受控執行個體-Azure Arc 的 --retention-period,如下所示。 下列命令同時適用於 directindirect 連線模式。

az sql mi-arc update  --name <SQLMI name> --k8s-namespace <namespace>  --use-k8s --retention-days <retentiondays>

例如:

az sql mi-arc update  --name sqlmi --k8s-namespace arc  --use-k8s --retention-days 10

停用自動備份

您可以如下所示,將 --retention-days 屬性設定為 0,以停用 Azure Arc 所啟用的 SQL 受控執行個體特定執行個體的內建自動備份。 下列命令同時適用於 directindirect 模式。

警告

如果您停用 Azure Arc 所啟用的 SQL 受控執行個體的自動備份,則會刪除任何設定的自動備份,而且您無法執行時間點還原。 您可以視需要變更 retention-days 屬性來重新起始自動備份。

az sql mi-arc update  --name <SQLMI name> --k8s-namespace <namespace>  --use-k8s --retention-days 0

例如:

az sql mi-arc update  --name sqlmi --k8s-namespace arc  --use-k8s --retention-days 0

監視備份

備份會儲存在 /var/opt/mssql/backups/archived/<dbname>/<datetime> 資料夾下,其中 <dbname> 是資料庫的名稱,而且 <datetime> 會是 UTC 格式的時間戳記,用於每個完整備份的開頭。 每次起始完整備份時,都會使用完整備份和該資料夾內的所有後續差異和交易記錄備份來建立新的資料夾。 最新的完整備份及其後續的差異和交易記錄備份會儲存在 /var/opt/mssql/backups/current/<dbname><datetime> 資料夾下。

限制

Azure Arc 所啟用的 SQL 受控執行個體的時間點還原有下列限制:

  • 時間點還原是資料庫層級的功能,不是執行個體層級的功能。 您無法使用時間點還原來還原整個執行個體。
  • 您只能還原至從中建立備份的 Azure Arc 所啟用的相同 SQL 受控執行個體。

深入了解 Azure Arc 所啟用的 SQL 受控執行個體的特性和功能

從建立資料控制器開始

建立 Azure Arc 所啟用的 SQL 受控執行個體