Share via


Azure CLI を使用して Azure VM で SQL データベースを管理する

Azure CLI は、コマンドラインやスクリプトで Azure リソースを作成および管理するために使用します。 この記事では、Azure CLI を使用して、バックアップされた SQL データベースを Azure VM で管理する方法について説明します。 これらのアクションは、Azure portal を使用して実行することもできます。

この記事では、次の方法について学習します。

  • バックアップ ジョブと復元ジョブを監視する
  • SQL インスタンスに追加された新しいデータベースを保護する
  • ポリシーを変更する
  • 保護の停止
  • Resume protection

CLI を使用して Azure の SQL データベースをバックアップする方法を使用して SQL データベースをバックアップした場合は、次のリソースを使用しています。

  • SQLResourceGroup という名前のリソース グループ
  • SQLVault という名前のコンテナー
  • VMAppContainer;Compute;SQLResourceGroup;testSQLVM という名前の保護されたコンテナー
  • sqldatabase;mssqlserver;master という名前のバックアップされたデータベース/項目
  • westus2 リージョン内のリソース

Azure CLI を使用すると、Azure VM で実行されており、Azure Backupを使用してバックアップされる SQL データベースの管理プロセスが容易になります。 以下のセクションでは、各管理操作について説明します。

Note

サポートされている構成とシナリオの詳細については、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
  • --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 の count を 60 日に更新します。
  • ScheduleRunDays として Saturday のみを指定します。
 {
  "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 インスタンスに追加された新しいデータベースを保護する

Recovery Services コンテナーに 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 コマンドレットを使用して、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 コマンドを使用します。

Resume protection

データを保持して 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 コマンドを使用します。

次のステップ