共用方式為


使用 Azure CLI 管理 Azure VM 中的 SQL 資料庫

Azure CLI 可用來從命令列或透過指令碼建立和管理 Azure 資源。 本文說明如何使用 Azure CLI 在 Azure VM 上管理備份的 SQL 資料庫。 您也可以使用 Azure 入口網站來執行這些動作。

備註

如果您使用 在 Azure 中使用 CLI 備份 SQL 資料庫 來備份 SQL 資料庫,則您會使用下列資源:

  • 名為 SQLResourceGroup 的資源群組
  • 名為 SQLVault 的保存庫
  • 受保護的容器名為 VMAppContainer;Compute;SQLResourceGroup;testSQLVM
  • 名為 sqldatabase;mssqlserver;master 的備份資料庫/專案
  • westus2 區域中的資源

Azure CLI 可簡化使用 Azure 備份在 Azure VM 上執行的 SQL 資料庫管理程式。 下列各節說明每個管理作業。

深入瞭解 SQL 備份支援的組態和案例

監視備份和還原作業

使用 az backup job list 命令來監視已完成或目前正在執行的作業(備份或還原)。 CLI 也可讓您 暫停目前正在執行的作業 ,或 等到作業完成為止。

az backup job list --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --output table

輸出會顯示為:

Name                                  Operation              Status      Item Name       			Start Time UTC
------------------------------------  ---------------        ---------   ----------      			-------------------  
e0f15dae-7cac-4475-a833-f52c50e5b6c3  ConfigureBackup        Completed   master [testSQLVM]         2019-12-03T03:09:210831+00:00  
ccdb4dce-8b15-47c5-8c46-b0985352238f  Backup (Full)          Completed   master [testSQLVM]   		2019-12-01T10:30:58.867489+00:00
4980af91-1090-49a6-ab96-13bc905a5282  Backup (Differential)  Completed   master [testSQLVM]			2019-12-01T10:36:00.563909+00:00
F7c68818-039f-4a0f-8d73-e0747e68a813  Restore (Log)          Completed   master [testSQLVM]			2019-12-03T05:44:51.081607+00:00

變更原則

若要變更 SQL 備份組態的基礎原則,請使用 az backup policy set 命令。 此命令中的 name 參數是指您要變更策略的備份項目。 在這裡,將 SQL 資料庫 sqldatabase;mssqlserver;master 的政策替換為 newSQLPolicy。 您可以使用 az backup policy create 命令來建立 新的原則。

az backup item set-policy --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
    --policy-name newSQLPolicy \
    --name sqldatabase;mssqlserver;master \

輸出會顯示為:

Name                                  Operation        Status     Item Name    Backup Management Type    Start Time UTC                    Duration
------------------------------------  ---------------  ---------  -----------  ------------------------  --------------------------------  --------------
ba350996-99ea-46b1-aae2-e2096c1e28cd  ConfigureBackup  Completed  master       AzureWorkload             2022-06-22T08:24:03.958001+00:00  0:01:12.435765

建立差異備份原則

若要建立差異備份原則,請使用 az backup policy create 命令搭配下列參數:

  • --backup-management-type:Azure 工作負載。
  • --workload-type:SQL DataBase。
  • --name:原則的名稱。
  • --policy:JSON 檔案,其中包含排程和保留的適當詳細數據。
  • --resource-group:保存庫的資源群組。
  • --vault-name:保存庫的名稱/

範例:

az backup policy create --resource-group SQLResourceGroup --vault-name SQLVault --name SQLPolicy --backup-management-type AzureWorkload --policy SQLPolicy.json --workload-type SQLDataBase

範例 JSON (sqlpolicy.json):

  "eTag": null,
  "id": "/Subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SQLResourceGroup/providers/Microsoft.RecoveryServices/vaults/SQLVault/backupPolicies/SQLPolicy",
  "location": null,
  "name": "sqlpolicy",
  "properties": {
    "backupManagementType": "AzureWorkload",
    "workLoadType": "SQLDataBase",
    "settings": {
      "timeZone": "UTC",
      "issqlcompression": false,
      "isCompression": false
    },
    "subProtectionPolicy": [
      {
        "policyType": "Full",
        "schedulePolicy": {
          "schedulePolicyType": "SimpleSchedulePolicy",
          "scheduleRunFrequency": "Weekly",
          "scheduleRunDays": [
            "Sunday"
          ],
          "scheduleRunTimes": [
            "2022-06-13T19:30:00Z"
          ],
          "scheduleWeeklyFrequency": 0
        },
        "retentionPolicy": {
          "retentionPolicyType": "LongTermRetentionPolicy",
          "weeklySchedule": {
            "daysOfTheWeek": [
              "Sunday"
            ],
            "retentionTimes": [
              "2022-06-13T19:30:00Z"
            ],
            "retentionDuration": {
              "count": 104,
              "durationType": "Weeks"
            }
          },
          "monthlySchedule": {
            "retentionScheduleFormatType": "Weekly",
            "retentionScheduleWeekly": {
              "daysOfTheWeek": [
                "Sunday"
              ],
              "weeksOfTheMonth": [
                "First"
              ]
            },
            "retentionTimes": [
              "2022-06-13T19:30:00Z"
            ],
            "retentionDuration": {
              "count": 60,
              "durationType": "Months"
            }
          },
          "yearlySchedule": {
            "retentionScheduleFormatType": "Weekly",
            "monthsOfYear": [
              "January"
            ],
            "retentionScheduleWeekly": {
              "daysOfTheWeek": [
                "Sunday"
              ],
              "weeksOfTheMonth": [
                "First"
              ]
            },
            "retentionTimes": [
              "2022-06-13T19:30:00Z"
            ],
            "retentionDuration": {
              "count": 10,
              "durationType": "Years"
            }
          }
        }
      },
      {
        "policyType": "Differential",
        "schedulePolicy": {
          "schedulePolicyType": "SimpleSchedulePolicy",
          "scheduleRunFrequency": "Weekly",
          "scheduleRunDays": [
            "Monday",
            "Tuesday",
            "Wednesday",
            "Thursday",
            "Friday",
            "Saturday"
          ],
          "scheduleRunTimes": [
            "2022-06-13T02:00:00Z"
          ],
          "scheduleWeeklyFrequency": 0
        },
        "retentionPolicy": {
          "retentionPolicyType": "SimpleRetentionPolicy",
          "retentionDuration": {
            "count": 30,
            "durationType": "Days"
          }
        }
      },
      {
        "policyType": "Log",
        "schedulePolicy": {
          "schedulePolicyType": "LogSchedulePolicy",
          "scheduleFrequencyInMins": 120
        },
        "retentionPolicy": {
          "retentionPolicyType": "SimpleRetentionPolicy",
          "retentionDuration": {
            "count": 15,
            "durationType": "Days"
          }
        }
      }
    ],
    "protectedItemsCount": 0
  },
  "resourceGroup": "SQLResourceGroup",
  "tags": null,
  "type": "Microsoft.RecoveryServices/vaults/backupPolicies"
} 

成功建立原則之後,命令的輸出會顯示您在執行命令時傳遞為參數的原則 JSON。

您可以修改原則的下一節,以指定差異備份的必要備份頻率和保留期。

例如:

{
  "policyType": "Differential",
  "retentionPolicy": {
    "retentionDuration": {
      "count": 30,
      "durationType": "Days"
    },
    "retentionPolicyType": "SimpleRetentionPolicy"
  },
  "schedulePolicy": {
    "schedulePolicyType": "SimpleSchedulePolicy",
    "scheduleRunDays": [
      "Monday",
      "Tuesday",
      "Wednesday",
      "Thursday",
      "Friday",
      "Saturday"
    ],
    "scheduleRunFrequency": "Weekly",
    "scheduleRunTimes": [
      "2017-03-07T02:00:00+00:00"
    ],
    "scheduleWeeklyFrequency": 0
  }
}

範例:

如果您想要只在 星期六 進行差異備份並保留 60 天,請在原則中執行下列變更:

  • retentionDuration 計數更新為 60 天。
  • 僅將星期六指定為 ScheduleRunDays
 {
  "policyType": "Differential",
  "retentionPolicy": {
    "retentionDuration": {
      "count": 60,
      "durationType": "Days"
    },
    "retentionPolicyType": "SimpleRetentionPolicy"
  },
  "schedulePolicy": {
    "schedulePolicyType": "SimpleSchedulePolicy",
    "scheduleRunDays": [
      "Saturday"
    ],
    "scheduleRunFrequency": "Weekly",
    "scheduleRunTimes": [
      "2017-03-07T02:00:00+00:00"
    ],
    "scheduleWeeklyFrequency": 0
  }
}

保護新增至 SQL 實例的新資料庫

向復原服務保存庫註冊 SQL 實例 會自動探索此實例中的所有資料庫。

不過,如果您稍後已將新的資料庫新增至 SQL 實例,請使用 az backup protectable-item initialize 命令。 此命令會探索新增的資料庫。

az backup protectable-item initialize --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
    --workload-type SQLDataBase

然後使用 az backup protectable-item list Cmdlet 來列出已在 SQL 實例上探索到的所有資料庫。 不過,此清單會排除已設定備份的資料庫。 探索到要備份的資料庫之後,請參閱 在 SQL 資料庫上啟用備份

az backup protectable-item list --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --workload-type SQLDataBase \
	--protectable-item-type SQLDataBase \
    --output table

您要備份的新資料庫會顯示在此清單中,如下所示:

Name                            Protectable Item Type    ParentName    ServerName    IsProtected
---------------------------     ----------------------   ------------  -----------   ------------
sqldatabase;mssqlserver;db1     SQLDataBase              mssqlserver   testSQLVM	 NotProtected  
sqldatabase;mssqlserver;db2     SQLDataBase              mssqlserver   testSQLVM	 NotProtected

停止保護 SQL 資料庫

您可以在下列程式中停止保護 SQL 資料庫:

  • 停止所有未來的備份作業並刪除所有復原點。
  • 停止所有未來的備份作業但保留復原點不變。

如果您選擇離開恢復點,請記住下列詳細資料:

  • 所有恢復點都會永遠保持不變,所有修剪作業在停止保護時停止,但會保留數據。
  • 您需支付受保護執行個體和已使用儲存體的費用。
  • 如果您刪除資料來源,但沒有停止備份,新的備份將會失敗。

停止保護的程式如下所述。

停止使用保留資料來進行保護

若要停止使用保留數據的保護,請使用 az backup protection disable' 命令。

az backup protection disable --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
    --item-name sqldatabase;mssqlserver;master \
    --workload-type SQLDataBase \
    --output table

輸出會顯示為:

Name                                  ResourceGroup
------------------------------------  ---------------  
g0f15dae-7cac-4475-d833-f52c50e5b6c3  SQLResourceGroup

若要確認此作業的狀態,請使用 az backup job show 命令。

停止保護而不保留數據

若要停止保護而不保留數據,請使用 az backup protection disable 命令。

az backup protection disable --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
    --item-name sqldatabase;mssqlserver;master \
    --workload-type SQLDataBase \
    --delete-backup-data true \
    --output table

輸出會顯示為:

Name                                  ResourceGroup
------------------------------------  ---------------  
g0f15dae-7cac-4475-d833-f52c50e5b6c3  SQLResourceGroup

若要確認此作業的狀態,請使用 az backup job show 命令。

繼續保護

當您停止使用保留數據的 SQL 資料庫保護時,稍後可以繼續保護。 如果您未保留備份的數據,您將無法繼續保護。

若要繼續保護,請使用 az backup protection resume 命令。

az backup protection resume --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
    --policy-name SQLPolicy \
    --output table

輸出會顯示為:

Name                                  ResourceGroup
------------------------------------  ---------------  
b2a7f108-1020-4529-870f-6c4c43e2bb9e  SQLResourceGroup

若要確認此作業的狀態,請使用 az backup job show 命令。

後續步驟